Hibernate基本套路(附赠HibernateUtil)
Hibernate六大核心接口,两个主要配置文件,以及他们直接的关系
1、Configuration接口:负责配置并启动Hibernate
2、SessionFactory接口:负责初始化Hibernate
3、Session接口:负责持久化对象的CRUD操作
4、Transaction接口:负责事务
5、Query接口和Criteria接口:负责执行各种数据库查询
示例套路
//加载配置文件
Configuration config =newConfiguration();
//创建服务注册对象
ServiceRegistry serviceRegistry =newServiceRegistryBuilder().applySettings(config.configure().getProperties()).buildServiceRegistry();
//创建会话工厂对象
SessionFactory factory=config.buildSessionFactory(serviceRegistry);
//得到session
Session session = factory.openSession();
//创建事务
Transaction tx = session.beginTransaction();
//保存
session.save(project1);
session.save(project2);
//提交事务
tx.commit();
//关闭会话
session.close();
factory.close();
Hibernate.cfg.xml
1. <!-- 设置数据库驱动 -->
2. <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
3. <!-- 设置数据库URL -->
4. <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>
5. <!-- 数据库用户名 -->
6. <property name="hibernate.connection.username">root</property>
7. <!-- 数据库密码 -->
8. <property name="hibernate.connection.password">123456</property>
9. <!-- 指定对应数据库的方言,hibernate为了更好适配各种关系数据库,针对每种数据库都指定了一个方言dialect -->
1. <!-- 映射文件 -->
2. <mapping resource="com/liang/hibernate/User.hbm.xml"/>
配置XXX.hbm.xml完成实体类映射(需在Hibernate.cfg.xml中添加路径)
有关具体的.hbm.xml文件的配置将在下一篇中讲解
常见报错
NoClassDefFoundError的错误
问题原因:未导入相应jar包
解决办法:引入对应JAR包
Schema exportunsuccessful 错误
问题原因:使用了jdbc驱动6.0以上版本又未在url上添加?serverTimezone=UTC
到了大家最关注的干货了,即将到来的HibernateUtil将大幅度的减少大家的编码难度,也就是把以上的套路进行了再包装,小伙伴们码住来个赞啊!!!
packagecom.demo.util;
importorg.hibernate.Session;
importorg.hibernate.SessionFactory;
importorg.hibernate.cfg.Configuration;
importorg.hibernate.service.ServiceRegistry;
importorg.hibernate.service.ServiceRegistryBuilder;
publicclass HibernateUtil {
private static SessionFactorysessionFactory;
/**
*@return 获取会话工厂
*/
public static SessionFactorygetSessionFactory()
{
//第一步:读取Hibernate的配置文件 hibernamte.cfg.xml文件
// cfg.configure()这句话就会去读hibernate.cfg.xml里面的配置文件.如果你的配置文件不叫hibernate,cfg.xml,你就要用cfg.configure("filename")来指定你需要的配置文件。
Configuration con=newConfiguration().configure();
//第二步:创建服务注册构建器对象,通过配置对象中加载所有的配置信息
ServiceRegistryBuilder regbulider=newServiceRegistryBuilder().applySettings(con.getProperties());
//创建注册服务
ServiceRegistryreg=regbulider.buildServiceRegistry();
//第三步:创建会话工厂
sessionFactory=con.buildSessionFactory(reg);
return sessionFactory;
}
/**
* @return 获取会话对象
*/
public static Session getSession()
{
returngetSessionFactory().openSession();
}
}