hibernate配置步骤

来源:互联网 发布:linux运维项目经验 编辑:程序博客网 时间:2024/06/05 14:07
1. copy  jar 包
2. 在src目录下新建hibernate核心配置文件 hibernate.cfg.xml
<hibernate-configuration>
<session-factory> <!-- SessionFactory相当于创建数据库连接的工厂,形象的我们可以把它堪称是一个数据库的配置 -->
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property><!-- 使用Property标签配置Sessionfactory的属性 -->
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<property name="connection.username">yxl</property>
<property name="connection.password">yxl</property>
<!-- 配置方言,方言是数据库之间的SQL区别,例如在Oracle分页使用rownum,而mysql则使用limit -->
<property name="dialect">org.hibernate.dialect.OracleDialect</property>
<!-- 显示SQL语句,在Hibernate环境下,我们增删改数据的时候,Hibernate会自动为我们生成SQL语句 ,
而show_sql则是将这些自动生成的语句打印在控制台,方便我们的调试-->
<property name="show_sql">true</property>
</session-factory>
</hibernate-configuration>
3. 利用hibernate开发数据库操作,以t_carousel表为例,新建实体类Carousel:
package com.bjsxt.hibernate.entity;


import java.util.Date;


public class Carousel {
private Integer carouselId;
private String name;
private String title;
private String photo;
private Integer status;
private Integer seq;
private Date createDate;
}


4. 建立实体类与表之间的映射关系,也就是ORM里面的“Mapping”,hibernate映射文件默认的格式是:******.hbm.xml


<hibernate-mapping>
<!-- 声明Carousel实体类与t_carousel表对应 -->
<class name="com.bjsxt.hibernate.entity.Carousel" table="t_carousel">
<!-- 声明主键,hibernate必须要求每张表有主键 -->
<!-- 在hbm.xml中clas标签下所有name属性均代表属性名,且区分大小写
column代表对应的是哪个字段名
-->
<id name="carouselId" column="carousel_id" length="9" type="java.lang.Integer">
<!-- 定义主键生成策略,increment策略代表最大主键值+1作为新纪录的编号 -->
<generator class="increment"></generator>
</id>
<!-- Property属性用于描述出了主键外的其他属性映射关系 -->
<property name="name" column="name" length="32" type="java.lang.String"></property>
<property name="title" column="title" length="32" type="java.lang.String"></property>
<property name="photo" column="photo" length="128" type="java.lang.String"></property>
<property name="status" column="status" length="9" type="java.lang.Integer"></property>
<property name="seq" column="seq" length="9" type="java.lang.Integer"></property>
<property name="createDate" column="create_date" type="java.util.Date"></property>
</class>
</hibernate-mapping>

5. 在hibernate.cfg.xml中增加carousel.hbm.xml的配置,让Hibernate初始化的时候加载这个配置文件
<!-- 告诉hibernate我们有这么一个配置文件 -->
<mapping resource="com/bjsxt/hibernate/entity/carousel.hbm.xml"/>


6. 使用Hibernate进行开发 
public class TestCase {


/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//初始化并读取hibernate.cfg.xml
Configuration conf = new Configuration().configure();
//创建SessionFactory,sessionFactory用于创建数据库的连接,以及保持会话(Session)
SessionFactory factory = conf.buildSessionFactory();
//Session是hiberante最核心的类,我们可以形象把他看成是对jdbc connection对象的包装,
//session对象提供了非常丰富的操作数据库的函数
Session session = factory.openSession();
//查询所有轮播图.创建一个查询
//在Hibernate中我们不再使用SQL语句进行查询,而改为使用HQL(Hibernate Query Language)语句查询
//HQL非常简单,与SQL不同的是以下三点:
//1. 在大多数情况下,我们不需要写select * 
//2. HQL语句中,所有出现的”字段名“均改为”属性名“,且大小写区分
//3. HQL语句中,所有出现的”表名“均改为"类名",且大小写区分

//select * from t_carousel  ->  from Carousel
//select * from t_carousel where carousel_id = 1 order by create_date  -> from Carousel where carourselId=1 order by createDate
//创建查询对象
Query query = session.createQuery("from Carousel");
List<Carousel> list =  query.list();
for(Carousel carousel : list){
System.out.println(carousel.getTitle());
}

Carousel c = new Carousel();
c.setCreateDate(new Date());
c.setName("呵呵");
c.setPhoto("AA");
c.setSeq(2);
c.setStatus(1);
c.setTitle("嘿嘿");
//打开事务
Transaction tx = session.beginTransaction();
session.save(c);
tx.commit();

session.close();
factory.close();
}
}
0 0