首页 > 代码库 > hibernate环境搭建及配置文件

hibernate环境搭建及配置文件

首先要下载好hibernate文件包

然后新建项目:

1.导入jar包(打开下载好的文件包,找到lib文件下的required文件包,里面有jar包)

注意:初学者可以暂时copy一下代码。

2.新建一个class文件,内容如下:

public class Person {

//类的属性
private Integer id;
private String name;
private String password;
private Date birthday;
//无参构造函数
public Person(){}
//初始化值
public Person(String name, String password, Date birthday) {
super();
this.name = name;
this.password = password;
this.birthday = birthday;
}

//给属性创建set,get方法

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public Date getBirthday() {
return birthday;
}

public void setBirthday(Date birthday) {
this.birthday = birthday;
}

}

3.再新建一个持久化映射文件,文件名一般取名为:对象名.hbm.xml,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 持久化映射到数据库表-->
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<!--package指文件所在的包名 -->
<hibernate-mapping package="com.hibernate">

<!--class  name="类名" table="表名"-->
<class name="Person" table="t_person">
<id name="id">

<!--

generator代表主键

native:代表主键自增

-->
<generator class="native"></generator>
</id>

<!--类的属性配置:

name:类的属性名

column:表的列名

length:表的列名的长度

-->
<property name="name" column="t_name"></property>
<property name="password" length="20"></property>
<property name="birthday"></property>
</class>
</hibernate-mapping>

4.在src目录下建立配置xml文件,文件名一般是hibernate.cfg.xml,内容如下(可以在project文件下的etc文件里找到hibernate.cfg.xml文件copy,配置文件在hibernate.properties.template文件中找到你所用的数据库配置):

<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory name="foo">
<!-- 数据库方言-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
<!-- 创建驱动 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 链接数据库
连本机:jdbc:mysql:///myhibernate
-->
<property name="hibernate.connection.url">jdbc:mysql:///myhibernate</property>
<!-- 数据库名字 -->
<property name="hibernate.connection.username">root</property>
<!-- 数据库密码 -->
<property name="hibernate.connection.password">root</property>
<!-- 数据库自动创建表操作
create-drop:在程序启动的时候创建数据表,程序退出的时候删除之前创建的表(设计表格)
create:在程序启动时先删除上一次创建的表,然后再创建新的表结构
update:在程序启动时如果没有表就创建表,有就检查有没有更新(推荐用这个)
validate:在程序启动时检查表结构,不会创建表
-->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 在控制台输出数据库执行语句 -->
<property name="hibernate.show_sql">true</property>
<!-- 数据库执行标准格式语句输出 -->
<property name="hibernate.format_sql">false</property>
<!-- 引入需要持久化的配置文件 -->
<mapping resource="com/hibernate/Person.hbm.xml"/>
</session-factory>
</hibernate-configuration>

5.测试:

public class TestHibernate {
//获得hibernate.cfg.xml配置
Configuration con=new Configuration().configure();
//链接工厂
SessionFactory sf=con.buildSessionFactory();
@Test

//添加
public void add(){
//session相当于一次数据库表的操作
Session session=sf.openSession();
//hibernate中增删查改需要事务的支持
session.beginTransaction();
Person preson=new Person("Lisa","123",new Date());
//执行SQL语句
session.save(preson);
//提交事务
session.getTransaction().commit();
//关闭session
session.close();
}
@Test

//更新
public void update(){
Session session=sf.openSession();
session.beginTransaction();
Person p=(Person) session.get(Person.class,3);
p.setName("holle");
session.update(p);
session.getTransaction().commit();
session.close();
}
@Test

//删除
public void delete(){
Session session=sf.openSession();
session.beginTransaction();
Person p=new Person();
p.setId(2);
session.delete(p);
session.getTransaction().commit();
session.close();
}
@Test

//查找
public void select(){
Session session=sf.openSession();
session.beginTransaction();
Person p=(Person) session.get(Person.class,3);
System.out.println(p.getName()+" "+p.getPassword()+" "+p.getBirthday());
session.getTransaction().commit();
session.close();
}
}