在写hibernate时候涉及到三类文件的编写:java类,映射文件,数据库表结构
在开发中:数据库表结构,java类,映射文件
hibernate中的java类:要有一个缺省的构造方法(反射);
hibernate中的映射文件:
<hibernate-mapping package="com.cn.myfirsthibernate">
<class name="User" table="User">
<id name="id" colume="id">
<generator class="assigned"/> 产生主键
</id>
</class>
</bibernate-mapping>
hibernate初始化过程:
Configuration cfg=new Configuration();
cfg.configure();
SessionFactory sf=cfg.buildSessionFactory();
新建一个工具类:
构造方法私有化,其他方法设置成静态的。通过类名直接访问;
public class HibernateUtil {
private static SessionFactory sessionFactory;
private HibernateUtil(){}
static{
Configuration cfg=new Configuration();
cfg.configure();
sessionFactory=cfg.buildSessionFactory();
}
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
public static Session getSession(){
return sessionFactory.openSession();
}
}
在Base.java类中做如下修改:
增加了对异常的处理
public class Base {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
UserTest user=new UserTest();
user.setBirthday(new Date());
user.setName("qqq");
addUser(user);
System.out.println("--------------------------------end");
}
static void addUser(UserTest user){
Session s=null;
Transaction tx=null;
try{
s=HibernateUtil.getSession();
tx=s.beginTransaction();
s.save(user);
tx.commit();
}catch(HibernateException e){
if(tx!=null){
tx.rollback();
throw e;
}
}finally{
if(s!=null){
s.close();
}
}
}
}