最近入门学习Hibernate框架,想分享总结一下踩过的坑和成功后的案例。
所用软件:
eclipse
Oracle数据库 (如果你使用的不是Oracle数据库可以修改hibernate.cfg.xml里面的配置)
现在,我们来看一下我们的包结构和数据库表结构
第一步:建立eclipse项目
1.eclipse里面新建一个Dynamic Web Project项目
2.在src中建一个名叫hibernate.cfg.xml的xml文件和两个分别叫com.Sakura.maya.model和com.Sakura.maya.test的包。
3.在com.Sakura.maya.model包中建两个类Hibernate.java和Hibernate.hbm.xml的文件
4.在com.Sakura.maya.test包中建立一个叫HibernateAction的类
结构如下:
第二步:引入jar包
包名如下:
第三步:创建数据库
create table Table_wcc_text(
stu_id number(10) primary key,
stu_name varchar2(20) not null,
stu_sex varchar2(20) default 'men' check(stu_sex in('men','women'))
)
结构如下:
第四步:加入代码
1.Hibernate.java
package com.Sakura.maya.model;
public class Hibernate {
private int stu_id;
private String stu_name;
private String stu_sex;
public int getStu_id() {
return stu_id;
}
public void setStu_id(int stu_id) {
this.stu_id = stu_id;
}
public String getStu_name() {
return stu_name;
}
public void setStu_name(String stu_name) {
this.stu_name = stu_name;
}
public String getStu_sex() {
return stu_sex;
}
public void setStu_sex(String stu_sex) {
this.stu_sex = stu_sex;
}
@Override
public String toString() {
return "HibernateAction [stu_id=" + stu_id + ", stu_name=" + stu_name
+ ", stu_sex=" + stu_sex + "]";
}
}
2.Hibernate.hbm.xml
/p>
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
org.hibernate.dialect.OracleDialect
oracle.jdbc.driver.OracleDriver
用户名
密码
jdbc:oracle:数据库链接
true
3.hibernate.cfg.xml
/p>
"-//Hibernate/hibernate-Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
4.HibernateAction.java
package com.Sakura.maya.test;
import java.util.List;
import javax.security.auth.kerberos.DelegationPermission;
import org.hibernate.*;
import org.hibernate.cfg.*;
import com.Sakura.maya.model.Hibernate;
public class HibernateAction {
//读取hibernate.cfg.xml的配置,加载Hiberna的类库
Configuration config=new Configuration().configure();
//根据配置,生成session工厂
SessionFactory factory= config.buildSessionFactory();
//用工厂生成session
Session session =factory.openSession();
public static void main(String[] args) {
HibernateAction dl = new HibernateAction();
dl.SelectAll();
}
public void Select(Integer stu_id) {
// 查询
Hibernate data = (Hibernate) session.get(Hibernate.class, stu_id);
System.out.println(data.getStu_id() + data.getStu_name()
+ data.getStu_sex());
}
public void SelectAll() {
// 查询所有
String hqlString = "from Hibernate";
Query query = session.createQuery(hqlString);
List list = query.list();
for (Hibernate ll : list) {
System.out.print(ll);
}
session.close();
}
public void Insert() {
//添加
//1.造对象
Hibernate data = new Hibernate();
data.setStu_id('1');
data.setStu_name("Sakura");
data.setStu_sex("men");
//2.用session.save()保存到数据库了
try {
session.beginTransaction();
session.save(data);
session.getTransaction().commit();
System.out.print("添加成功");
} catch (Exception ex) {
session.getTransaction().rollback();
}
session.close();
}
//删除
public void Delete(Integer stu_id) {
//先查出
Hibernate data = (Hibernate) session.get(Hibernate.class, stu_id);// get?�load?�可以查
if (data != null) {
session.beginTransaction();
//删除提交数据库
session.delete(data);
System.out.print("删除成功");
session.getTransaction().commit();
}
session.close();
}
public void update(Integer stu_id) {
//修改
//1.查
Hibernate data = (Hibernate) session.load(Hibernate.class, stu_id);
if (data != null) {
session.beginTransaction();
//2.改
data.setStu_name("Sakura1");
data.setStu_sex("women");
//3.提交
session.update(data);
session.getTransaction().commit();
}
session.close();
System.out.print("修改成功");
}
}
OK!就搭建成功了!
在搭建之中遇见的小问题:
1.显示连接不到数据库
解决方法:可能是你不是oracle数据库在hibernate.cfg.xml中修改连接方法。
2.报错:javax/transaction/Synchronization
解决方法:你需要下载一个jta.jar包
3.报错:找不到hibernate.cfg.xml文件
解决方法:缺少jar包或者放的位置不对,放在src