“Hibernate源码分析:入门代码流程”的版本间差异
跳到导航
跳到搜索
(创建页面,内容为“category:Hibernate == 关于 == 对于入门的代码案例,分析其执行流程,有助于理解其设计并熟悉 API 的使用。 入门代码: : <syntaxhighlight lang="Java" highlight=""> class HibernateTest{ @Test public void testDemo() { // 加载 hibernate 核心配置文件 Configuration cfg = new Configuration(); cfg.configure(); // 根据 hibernate 核心配置文件内容,创建 sessionFactory SessionFactory sessionFacto…”) |
|||
第59行: | 第59行: | ||
== 加载核心配置文件 == | == 加载核心配置文件 == | ||
对于: | |||
: <syntaxhighlight lang="Java" highlight=""> | |||
Configuration cfg = new Configuration(); | |||
cfg.configure(); | |||
</syntaxhighlight> | |||
其过程如下: | |||
# 创建一个 Configuration 对象; | |||
# 调用其 configure() 方法: | |||
#: <syntaxhighlight lang="Java" highlight=""> | |||
public class Configuration { | |||
... | |||
public Configuration() { | |||
this( new BootstrapServiceRegistryBuilder().build() ); | |||
} | |||
public Configuration(BootstrapServiceRegistry serviceRegistry) { | |||
this.bootstrapServiceRegistry = serviceRegistry; | |||
this.metadataSources = new MetadataSources( serviceRegistry ); | |||
reset(); | |||
} | |||
public Configuration(MetadataSources metadataSources) { | |||
this.bootstrapServiceRegistry = getBootstrapRegistry( metadataSources.getServiceRegistry() ); | |||
this.metadataSources = metadataSources; | |||
reset(); | |||
} | |||
... | |||
} | |||
</syntaxhighlight> | |||
#* 有多个重载的构造方法,用于不同加载方式。 | |||
#* 其实默认的无参构造函数,将创建一个 BootstrapServiceRegistryImpl 类(继承了 BootstrapServiceRegistryBuilder 类)的对象。 | |||
【待续……】 | |||
== 创建 sessionFactory == | == 创建 sessionFactory == |
2022年6月13日 (一) 03:53的版本
关于
对于入门的代码案例,分析其执行流程,有助于理解其设计并熟悉 API 的使用。
入门代码:
class HibernateTest{ @Test public void testDemo() { // 加载 hibernate 核心配置文件 Configuration cfg = new Configuration(); cfg.configure(); // 根据 hibernate 核心配置文件内容,创建 sessionFactory SessionFactory sessionFactory = cfg.buildSessionFactory(); // 使用 SessionFactory 创建 session 对象 Session session = sessionFactory.openSession(); // Session session = sessionFactory.grtCurrentSession(); // 使用事务 Transaction tx = null; try{ // 开启事务 tx = session.beginTransaction(); // 逻辑代码 User user = new User(); user.setUsername("Eijux"); user.setPassword("123456"); user.setAddress("成都"); session.save(user); // 提交事务 tx.commit(); }catch(HibernateException e){ if(tx != null){ // 回滚事务 tx.rollback(); } throw e; }finally{ if(session != null){ // 关闭 session session.close(); } } // 关闭 sessionFactory sessionFactory.close(); } }
加载核心配置文件
对于:
Configuration cfg = new Configuration(); cfg.configure();
其过程如下:
- 创建一个 Configuration 对象;
- 调用其 configure() 方法:
public class Configuration { ... public Configuration() { this( new BootstrapServiceRegistryBuilder().build() ); } public Configuration(BootstrapServiceRegistry serviceRegistry) { this.bootstrapServiceRegistry = serviceRegistry; this.metadataSources = new MetadataSources( serviceRegistry ); reset(); } public Configuration(MetadataSources metadataSources) { this.bootstrapServiceRegistry = getBootstrapRegistry( metadataSources.getServiceRegistry() ); this.metadataSources = metadataSources; reset(); } ... }
- 有多个重载的构造方法,用于不同加载方式。
- 其实默认的无参构造函数,将创建一个 BootstrapServiceRegistryImpl 类(继承了 BootstrapServiceRegistryBuilder 类)的对象。
【待续……】