Hibernate的配置文件与测试

首先新建java project项目,,笔者使用hibernate的版本是4.2.21

搭建hibernate环境:

src新建文件夹,导入以下jar包:

required目录下的所有jar包

optional/c3p0目录下的所有jar包

optionnal/ehcache/slf4j-api-1.6.1.jar

jpa-metamodel-generator目录下所有jar包

jpa/hibernate-entitymanager-5.0.1.Final.jar

当然,还需要一些其它的辅助jar包:

junit-4.9.jar

slf4j-log4j12-1.7.12.jar与log4j-1.2.17.jar

mysql驱动


HIbernate工作原理

application调用了hibernate的api(增删改查),方法(底层是通过jdbc操控数据库的)

在dao层直接关联数据库的


准备工作:

第一步:创建一个student类,映射表的字段com.bean/student.java
定义了id,name,age,score字段

第二步:在mysql中创建test数据库:student的表,字段需一样


定义映射表的配置文件Student.hbm.xml(文件名可改,因为在主配置文件中注册了)【作用:类到表的映射,属性到字段的映射】:

<?xml version="1.0" encoding="utf-8">
hibernate-core-5.0.0.Final.jar/org.hibernate中找到
hibernate-mapping-3.0.dtd(映射文件的)--》打开

//复制以.dtd结尾的url

<hibernate-mapping>

<class name="student类的路径" table="t_student" package="一个包的路径(映射该包下的所有类,studnent类在其中)">
<id name="id" column="tid">
<generator class="native" />//主键策略
</id>
//属性----->字段
<property name="name" column="tname"/>
<property name="age" column="tage"/>
<property name="score" column="tscore"/>

</hibernate-mapping>

定义主配置文件hibernate.cfg.xml(文件名不能改),注册DB连接

补充点:

hibernate的session是在dao层,hibernate的增删改查都在session对象中

servelt的session是在view层,http的


<?xml version="1.0" encoding="utf-8">
hibernate-core-5.0.0.Final.jar/org.hibernate中找到
hibernate-configuration-3.0.dtd(主配置文件的)

复制以configuration.dtd结尾的url

<hibernate-configuration>
<session-factory>
DB连接四要素
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://192.168.40.115:3306/test</property>test是mysql数据库中的表,到时候,连接的也就是该表
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">123456</property>

指定方言,在hibernate-core-5.0.0.Final.jar中的dialect结尾的--》MYSQL5Dialect的全名路径
<property name="hibernate.dialect">MYSQL5Dialect的全名</property>

数据源:数据库连接池C3P0  连接配置
<property name="(连接提供者)hibernate.connection.provider_class">
hibernate-c3p0.Final.jar中找C3p0ConnectionProvide的全名路径
</property>

上下文
<property name="hibernate.current_session_context_class">
thread(可以保证在同一线程可以获取到的是同一个session)
</property>

<property name="hibernate.current_session_context_class">
jta(以后做分布式系统用的,不用管)
</property>

<property name="hibernate.current_session_context_class">
spring(以后整合时用的,不用管)
</property>

自动建表              ddl(创建) dml(操作语言)dql(查询语言)
<property name="hibernate.hbm2ddl.auto">
create(每运行一次,把旧表删除,建新表)或者update(没有表,就建一个,有表的话,就会更新数据,一使用)
</property>
调试的时候:显示sql:自动把api封装的转换成sql显示出来
<property name="hibernate.show_sql">
true
</property>
显示sql的时候都在一行,不利于查看所以格式化一下
<property name="hibernate.format_sql">
true
</property>

注册映射文件
<mapping resource="映射文件的hbm.xml的路径"/>


</session-factory>
</hibernate-configuration>


测试类
public class MyTest{

@Test
public void testSave(){
==============hibernate操作数据库的七步============
//1.加载主配置文件
Configuration configure = new Configuration().configure();

//2.创建Session工厂
SessionFactory sessionFactory=configure.buildSessionFactory()

//3.获取Session对象
Session session = sessionFactory.getCurrentSession();

try{
//4.开启事务
session.beginTransaction();

//5.执行操作
Student student=new Student("张三",20,93.5);

session.save(student);

//6.事务提交
session.getTransaction().commit();

}catch (Exception e){

e.printStackTrace();

//7.事务回滚
session.getTransaction().rollback();

}

}
}


解析数据库连接池概念

在内存的一个数据结构或集合,里面存放的是数据库连接
当用户需要连接数据库时,不需要新建连接,可直接从数据库连接池中获取连接

数据库连接池是先建好的
用户是直接从连接池获取


数据库连接池要配置多少连接


所以数据库连接池需要配置
为了提高效率:当连接池里的连接达到某一下限(需要设置下限。假设60)
当数据库连接池的连接数达到60下限时,需要加连接数,比如一次加20(也是需要设置)
一直拿。一直创建
当拿走很多的时候,突然他们都不用了,都释放了
连接池也会爆满,
所以我们应该给连接池设置一个上限,最多放置多少个。
当达到上限后,就不在放连接给用户,池子就不接受了
直接到连接释放掉


设置空闲时间不能超过,防止内存的空闲资源


本文测试的连接池是第三方连接池C390的连接池


补充:

一般情况下:在企业中,不用改主配置文件hibernate.cfg.xml


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值