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();
}
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。