对于hibernate的介绍,网络上一搜一堆,恐怕我写的也没前辈总结的好。
这个博主总结的十分好,方便大家欣赏 http://blog.csdn.net/liujiahan629629/article/details/21442607
真正要掌握,还得需要自己动手,才能丰衣足食。
除了这些jar包,还需要数据库驱动jar,根据自己用的数据库自定,这里用到的是oracle
2.jar包导入好,看看配置,在配置之前,看下实体和表结构。
实体 Users
package com.hib.entity;
public class Users {
private Integer id;
private String name;
private String pass;
private String address;
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 getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Users(Integer id, String name, String pass, String address) {
super();
this.id = id;
this.name = name;
this.pass = pass;
this.address = address;
}
public Users() {
super();
}
@Override
public String toString() {
return "Users [id=" + id + ", name=" + name + ", pass=" + pass + ", address=" + address + "]";
}
}表结构
在src下 hibernate.cfg.xml配置,如果不知道里面的配置怎么写。可以通过在下载的jar包中搜索hibernate.cfg.xml,里面有配置信息。
hibernate.cfg.xml 配置如下
<!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="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property> <property name="hibernate.connection.username">ssh</property> <property name="hibernate.connection.password">ssh</property> <property name="hibernate.connection.url">jdbc:oracle:thin:@127.0.0.1:1521:xe</property> <!-- 方言 --> <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property> <!-- 可视化sql --> <property name="hibernate.show_sql">true</property> <!-- 格式化sql,自动对可视化sql换行,对齐 --> <property name="hibernate.format_sql">true</property> <!-- 映射文件配置 --> <mapping resource="User.hbm.xml"/> </session-factory> </hibernate-configuration>
3. User.hbm.xml配置
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > <hibernate-mapping> <!-- name:是实体 table是表名称 --> <class name="com.hib.entity.Users" table="TEST_USER"> <id name="id"> <!-- 主键自增策略,hibernate提供了几种,这里测试,先写一个,后面会补充 --> <generator class="increment"></generator> </id> <!-- name:是实体中属性的名称,column:是表中字段的名称,type是数据类型 在这里发现后面的 pass和 address 没有写column和type 如果表字段和实体属性名称一致,可以省略不写 --> <property name="name" column="name" type="java.lang.String"/> <property name="pass"/> <property name="address"/> </class> </hibernate-mapping>
4.测试数据连接是否配置成功
package com.hib.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import com.hib.entity.Users;
public class TestConn {
// 获取session
public static Session getSession(){
// 加载配置
Configuration cfg = new Configuration().configure();
// 获取sessionFactory
SessionFactory factory = cfg.buildSessionFactory();
// 获取session
Session session = factory.openSession();
return session;
}
// 查询
@Test
public void query(){
Session session = getSession();
// 查询
Users users = session.get(Users.class, 1);
System.out.println(users);
//关闭资源
session.close();
}
// 在进行增删改时 ,好控制事务 ---- 插入
@Test
public void insert(){
Session session = getSession();
// 开启事务
Transaction tx = session.beginTransaction();
Users users = new Users(null, "xyz", "xyz", "china");
// 插入
session.save(users);
// 事务提交
tx.commit();
// 事务回滚
//tx.rollback();
session.close();
}
// 更新数据前 需要先查询出修改的数据
@Test
public void update(){
Session session = getSession();
Transaction tx = session.beginTransaction();
Users users = session.get(Users.class, 1);
users.setAddress("郑州");
users.setName("小李飞刀");
session.update(users);
tx.commit();
session.close();
}
// 删除 需要先出现出删除的数据
@Test
public void delete(){
Session session = getSession();
Transaction tx = session.beginTransaction();
Users users = session.get(Users.class, 1);
session.delete(users);
tx.commit();
session.close();
}
}这里仅仅是个测试,后面的会继续更新,不足希望多多指教。
本文出自 “永恒之光” 博客,请务必保留此出处http://zhuws.blog.51cto.com/11134439/1932652
原文:http://zhuws.blog.51cto.com/11134439/1932652