hibernate 笔记之api详解

4 api详解【多练】

4.1 体系结构


4.2  Configuration 配置对象

       Configuration是hibernate 核心配置文件种类

      hibernate.cfg.xml 通常使用xml配置文件,可以配置内容更丰富
<session-factory>
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql:///contacts</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">root</property>

<!-- 方言:为不同的数据库,不同的版本,
生成sql语句(DQL查询语句)提供依据 
 			* mysql 字符串 varchar
 			* orcale 字符串 varchar2
 		-->
		<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect </property>

<!--是否显示sql语句 -->
		<property name="show_sql">true</property>
<property name="hibernate.format_sql">true</property>

<!-- 自动创建表(了解) ,学习中使用,开发不使用的。
			* 取值:
			update:【】
				如果表不存在,将创建表。
				如果表已经存在,通过hbm映射文件更新表(添加)。(映射文件必须是数据库对应)
					表中的列可以多,不负责删除。
			create :如果表存在,先删除,再创建。程序结束时,之前创建的表不删除。【】
			create-drop:与create几乎一样。如果factory.close()执行,将在JVM关闭同时,将创建的表删除了。(测试)
			validate:校验 hbm映射文件 和 表的列是否对应,如果对应正常执行,如果不对应抛出异常。(测试)
		-->
		<property name="hbm2ddl.auto">update</property>

<!-- 添加映射文件 -->
		<mapping resource="com/test/hibernate/User.hbm.xml"/>
</session-factory>

User.hbm.xml

<class name="com.test.hibernate.User" table="user">
        <id name="uid" column="id">
            <generator class="native"/>
        </id>
        <property name="username" column="name"></property>
	   <property name="password" column="pwd"></property>
</class>
Configuration的其他方法:
通过file创建Configuration对象:new Configuration().configure(file)
通过路径创建Configuration对象: new Configuration().configure(path)
通过代码向Configuation中添加mapping resource :new Configuration().addClass(User.class)

4.3  SessionFactory工厂

  1. SessionFactory 相当于java web连接池,用于管理所有session
  2. 获得sessionFactory方式:
  3. hibernate4之前的获取方式:config.buildSessionFactory();
  4. hibernate4之后的获取方式:在hibernate4之后,所有的基于hibernate的配置或者服务都应该向ServiceRegistery注册,所以可以通过如下代码获取
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
SessionFactory factory = config.buildSessionFactory(serviceRegistry);

SessionFactory线程安全,可以是成员变量,多个线程同时访问时,不会出现线程并发访问问题。

提供api:

 //打开一个新的会话 session
factory.openSession();


//获得当前线程中绑定的会话session,当事务中有多个数据库操作的时候,需要保证操作数据库的session是
同一个 
factory.getCurrentSession();


注意:要使用factory.getCurrentSession方法,需要在hibernate.cfg.xml添加一条配置

<!-- 与本地线程绑定 -->
<property name=" hibernate.current_session_context_class ">thread</property>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值