导入hibernate jar包 和 数据库驱动jar包
把下载的hibernate包解压
把required文件夹下的所有jar包复制到工程下hibernate\hibernate-release-4.3.11.Final\lib\required
生成hibernate.cfg.xml配置文件
在src目录下生成
<!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 >
<!-- 配置数据库信息 -->
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<property name="connection.username">scott</property>
<property name="connection.password">tiger</property>
<!-- 格式化sql语句 -->
<property name="format_sql">true</property>
<!-- 官方语言 -->
<property name="dialect">org.hibernate.dialect.OracleDialect</property>
<!-- 控制台显示sql -->
<property name="show_sql">true</property>
<!-- 自动创建表 -->
<property name="hbm2ddl.auto">create</property>
<!-- 映射文件 -->
<mapping resource="com/ly/bean/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
3.编写实体类
User.java
package com.ly.bean;
import java.util.Date;
public class User {
private Integer id;
private String username;
private String phone;
private String password;
private Date register;
public User() {
// TODO Auto-generated constructor stub
}
public User(Integer id, String username, String phone, String password,
Date register) {
super();
this.id = id;
this.username = username;
this.phone = phone;
this.password = password;
this.register = register;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Date getRegister() {
return register;
}
public void setRegister(Date register) {
this.register = register;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", phone=" + phone
+ ", password=" + password + ", register=" + register + "]";
}
}
4.编写实体类对应的映射文件
User.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">
<hibernate-mapping package="com.ly.bean">
<class name="User" table="tb_users">
<id name="id" column="id" type="integer">
<!-- 主键生成方式,native由数据库自己判断 identity、hilo、sequence MySQL则为identity ,oracle则为sequence-->
<!-- 生成主键的策略,只有插入表的时候有该策略
1,increment (hibernate框架,取到最大id+1,如果没有则从1开始)
2,identity, 使用数据库自动增长,依赖于数据库
3,sequence, 序列,依赖于数据库,oracle
4,native (根据不同的数据库,选择identity,或者 sequence)
5,assigned,指定id(自己编写)
-->
<generator class="sequence"/>
</id>
<!-- 1.type们可以使用hibernate类型,则首字母小写,也可以使用java类型 java.lang.String 也可以省略type 默认实体类中的类型
2.column 可写 也可不写,默认属性名
-->
<property name="username" column="uname" type="string"></property>
<property name="phone" column="phone" type="string"></property>
<property name="password" column="password" type="string"></property>
<property name="register" column="register" type="date"></property>
</class>
</hibernate-mapping>
5.编写DAO层 操作类
package com.ly.dao;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import com.ly.bean.User;
public class UserDao {
private static SessionFactory sf = null;
public UserDao() {
// 建立一个配置类,通过configure()方法来加载配置文件
Configuration cf = new Configuration().configure();
// 建立一个注册类,提供注册服务。hibernate4.0以后增加的 传入参数配置类的属性
ServiceRegistry sr = new StandardServiceRegistryBuilder()
.applySettings(cf.getProperties()).build();
// 通过配置类,建立一个会话工厂SessionFactory重量级的,是线程安全的。
sf = cf.buildSessionFactory(sr);
}
public User getUserById(Integer id) {
// 建立一个会话,相当于一个connection
Session session = sf.openSession();
User user = (User) session.get(User.class, id);
System.out.println(user);
session.close();
return user;
}
public List getUserList() {
// 建立一个会话,相当于一个connection
Session session = sf.openSession();
List list = null;
list = session.createCriteria(User.class).list();
session.close();
return list;
}
public void save(User u) {
// User u = new User(0,"aa","13901234567","admin",new Date());
Session session = sf.openSession();
Transaction t = session.getTransaction();
t.begin();
session.save(u);
t.commit();
System.out.println("save");
}
public void delete(Integer id) {
Session session = sf.openSession();
Transaction t = session.getTransaction();
t.begin();
User u = (User) session.get(User.class, id);
session.delete(u);
t.commit();
System.out.println("delete");
}
public void update(User user) {
Session session = sf.openSession();
Transaction t = session.getTransaction();
t.begin();
// User u = (User)session.get(User.class, id);
// if(u != null){
session.update(user);
// }
t.commit();
System.out.println("update");
}
public void close() {
sf.close();
}
public static void main(String[] args) {
UserDao ud = new UserDao();
// User u = new User(null,"aa","13901234567","admin",new Date());
// ud.save(u);
List list = ud.getUserList();
System.out.println("共有 " + list.size() + " 条记录");
System.out.println(Arrays.toString(list.toArray()));
// User user = new User(2001,"cc","13901234567","admin",new Date());
// ud.update(user);
// ud.delete(2001);
ud.close();
}
}
6.测试即可