回到我们刚才提到的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!");
}