Hibernate 学习笔记

 Hibernate冬眠 ORM框架(OR mapping )分别是对象 关系 映射mysql

对象 – 持久化 – 数据库 (关系数据库、对象数据库)sql

对象 – 关系数据库

Hibernate的优势:(1)使用HIBERNATE.应用层就能够专一于业务逻辑的实现, 只需知道怎么使用HIBERNATE所提供的接口,缓存

        而不知道具体实现的细节.                  session

   (2)封装了JDBC以后,能够链接数据库时减小代码的冗余.oracle

   (3)直接用映射文件,能够方便的实现与不一样数据库的链接.app

Hibernate的冬眠是指将对象的生命周期更长一点,也就是对象的持久化负载均衡

1讲到将对象保存到文件中用到的类是ObjectOutputStream可是这种不方便,所以将此对象存储到数据库中,那就方便多了,hibernate就是讲对象转化为关系,它将对象的属性存到数据库中,有了对象型数据库就不会有hibernate了;框架

Insert into(User user)eclipse

Ps.setString(1,user.getUsername)这种写法是纯手工的比较比较慢,

演示的是以Java项目为例的

 hibernate的环境搭建,将hibernate包下的hibernate3.jarlib包所有拷贝到项目中。Lib中的jar文件都要解压出来放进工程项目下;接着导入包和数据库驱动;hibernate中的配置文件是hibernate.cfg.xml;放到项目的src文件夹下;在hibernate.cfg.xml里面有个session工厂;

工厂有好几个有DEO工厂产生DEO,还有个Connection工厂用来生产connection的;

 Session工厂是用来产生session的,但不是jsp中的sessionhibernatesession只封装了connection就是用来给客户提供数据库链接的;则将数据库的信息配置到

  <session-factory >

<propetry name=” hibernate.connection.driver_class”>com.mysql.jdbc.Driver</property>

<propetry name=” hibernate.connection.url”>com.mysql.jdbc.Driver</property>

<propetry name=” hibernate.connection.username”>hibernate </property>

<propetry name=” hibernate.connection.password”>paswssword </property>

<propetry name=” hibernate.dialect”>com.mysql.jdbc.Driver</property>

 

</session-factory>

                              hibernate/properties/etc/ hibernate.properties

中;配置的时候能够参考包里的hibernate/properties/etc/hibernate.cfg.xml文件有数据库的相关配置信息;经过这样的配置后就是hibernate的数据库链接可是每次链接数据库的时候都要new一下效率就不行了;因此最好配置好点的数据源如c3p0

hibernate.dialect org.hibernate.dialect.MySQLDialect

dialecthibernate中有方言这个概念,它能够自动的将配置信息转换成底层的sql语句;好比分页,需好几条sql语句;自动实现数据库不一样带来的技术;(好比mysqlsqlserver中的主键有自动递增,但oracle中就没有这时候就要咱们去配置触发器来实现此功能,而是序列方式;因此hibernate能够自动的去检测是那个数据库;用myeclipse创建数据库的方法

Hibernate 学习笔记 - xihuawuyu - suiyuewusheng

  点击图中的DB Browser,新链接mysql数据;

4 C3p0配置这是个比较经典的数据源配置;

C3P0 Connection Pool###

###########################

 

#hibernate.c3p0.max_size 2   最多连接是数据库

#hibernate.c3p0.min_size 2    最少链接的

#hibernate.c3p0.timeout 5000  链接超时

#hibernate.c3p0.max_statements 100      数据库中的缓存

#hibernate.c3p0.idle_test_period 3000     链接满了后多少时间在链接;

#hibernate.c3p0.acquire_increment 2     从新链接的数量

#hibernate.c3p0.validate false         验证链接是否可用;可用于压力测试中;配置方法:

<propetry name=” hibernate.c3p0.max_size”>50 </property>

  是否打印语句是用来检测的时候能够在控制台看到sql语句;

<propetry name=” hibernate.show_sql”>true </property>

下一步是创建关系映射,

Id(主键)配置持久化标识;其它属性就用property来配置;

 

<generator class="generatorClass"/>表示主键生成方式mysql中是indentify

 

在这有一个和indentifymysql 主键生成方式)类似的关键字那就是increment它在集群中不易使用

   Indentifysquence区别indentify能够在sqlServermysql中逐渐自动递增identity由于只能在一个table中用一次,可是不能用在oracle中;squence用在Oraclesequence能够在一张表中的多个字段多被用到db2 支持sequence,identity的两种用法

      

集群也就是负载均衡的意思,可是increment它运行的时候必须在同一个虚拟机,因此它在集群中不能使用的

6注册映射关系:

   <mapping resource=”/kk.xml”/>

7测试用到的测试工具是Junit工具:测试时创建一个类必须继承testcase类;用到了读取hibernate的配置文件的方法是configuration();Configuration cfg=new Configuration();

建立session-factory的方法

SeeionFactory sf = cfg.buildSessionFactory();

相关文章
相关标签/搜索