回到我们刚才提到的ORMService类,我们将在这个类中调用Hibernate的持久化操作,将一个新的Temp类对象
存入数据库中。这一切都是由Hibernate经由我们为temp配置的映射文件,调用其session.save(temp)操作,
在后台执行的数据库插入动作,并不由我们费力的创建显示的connection链接并书写insert语名。
ORMService类的代码如下:
package com.learndiary.website.services;
import javax.servlet.ServletContext;
import net.sf.hibernate.*;
import net.sf.hibernate.cfg.Configuration;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.Session;
import net.sf.hibernate.Transaction;
import java.sql.Connection;
import java.io.File;
public class ORMService {
	ServletContext context = null;
	private static SessionFactory sessionFactory =null;
	//用以测试MYSQL数据库连接的方法
	public void initSessionFactory(){
		try{
		    File file = new File("g:\\Eclipse3.1Workspace\\LearnDiaryV1.0\\web\\WEB-INF\\src\\hibernate.cfg.xml");
			Configuration cfg = new Configuration().configure(file);
			SessionFactory factory = cfg.buildSessionFactory();
			sessionFactory = factory;
			if(sessionFactory ==null){
				System.out.println("sessionFactory is null!");
			}
		}catch(Exception ex){
			ex.printStackTrace();
		}
	}
	public boolean saveTempData(){
		boolean success = false;
		String name = "binglian";
		String value = "coding girl";
		String description ="programer";
		Session session =null;
		Transaction tr =null;
		try{
			Temp temp = new Temp(name, value, description);
			if(sessionFactory !=null){
				 session = sessionFactory.openSession();
				 tr  = session.beginTransaction();
				 Connection con = session.connection();
				 if(con !=null){
				 session.save(temp);
				 session.flush();
				 }else{
				 	System.out.println("the connection is null!");
				 }
				 tr.commit();
				success = true;
			}else{
				System.out.println("the sessionFactory is null");
			}
		}catch(Exception eg){
			try{
			if(tr !=null) {tr.rollback();}
			}catch(Exception eh){
				eh.printStackTrace();
			}
			eg.printStackTrace();
			System.out.println("session save failed!");
		}finally{
			try{
			 session.close();
			}catch(Exception em){
				em.printStackTrace();
			}
			}
		return success;
	}
	   
       	public static void main(String args[]){
		ORMService ser = new ORMService();
		ser.initSessionFactory();
		boolean saved = ser.saveTempData();
		System.out.println("data has " + saved + " saved!");
	}