先随便新键一个项目生成一个默认的配置文件
主要的架包支持
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>HibernateLesson</groupId>
<artifactId>HibernateLesson</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name/>
<description/>
<dependencies>
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>javaee-api</artifactId>
<version>5.0-1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>1.2_04</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>1.2_04</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.1.9.Final</version>
</dependency>
<!--
加载本地ojdbc6.jar
前面三个可以乱填,最好是配上,不然可能会报错
scope 系统
scope 路径
-->
<dependency>
<groupId>oracle</groupId>
<artifactId>orcale</artifactId>
<version>3.2.8</version>
<scope>system</scope>
<systemPath>C:\app\Administrator\product\11.2.0\dbhome_1\jdbc\lib\ojdbc6.jar</systemPath>
</dependency>
</dependencies>
<build>
<sourceDirectory>${basedir}/src</sourceDirectory>
<outputDirectory>${basedir}/WebRoot/WEB-INF/classes</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webappDirectory>${basedir}/WebRoot</webappDirectory>
<warSourceDirectory>${basedir}/WebRoot</warSourceDirectory>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<!-- 告诉hibernate使用的是orcle数据库 -->
<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
<!-- 配置session Factory四要素 -->
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<property name="connection.username">scott</property>
<property name="connection.password">tiger</property>
<property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
<!-- 打印日志 -->
<property name="show_sql">true</property>
<!-- 扫描映射文件 -->
<mapping resource="cn/et/hibernate/lesson01/Emp.hbm.xml"/>
</session-factory>
</hibernate-configuration>
把项目增加HIbernate支持
选择刚刚配置好的hibernate.cfg.xml
生动生成实体类和Mapper映射文件
Emp实体类,要改一下
package cn.et.hibernate.lesson01;
import java.util.Date;
/**
* Emp entity. @author MyEclipse Persistence Tools
*/
public class Emp implements java.io.Serializable {
// Fields
/**
* oid对象唯一标识符
*/
private Short empno;
private String ename;
private String job;
private Short mgr;
private Date hiredate;
private Double sal;
private Double comm;
private String sex;
public Short getEmpno() {
return empno;
}
public void setEmpno(Short empno) {
this.empno = empno;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public Short getMgr() {
return mgr;
}
public void setMgr(Short mgr) {
this.mgr = mgr;
}
public Date getHiredate() {
return hiredate;
}
public void setHiredate(Date hiredate) {
this.hiredate = hiredate;
}
public Double getSal() {
return sal;
}
public void setSal(Double sal) {
this.sal = sal;
}
public Double getComm() {
return comm;
}
public void setComm(Double comm) {
this.comm = comm;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Emp [comm=" + comm + ", empno=" + empno + ", ename=" + ename
+ ", hiredate=" + hiredate + ", job=" + job + ", mgr=" + mgr
+ ", sal=" + sal + ", sex=" + sex + "]";
}
}
Emp.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">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<!--
ORM映射 类和表的映射
class name属性 table表名
-->
<class name="cn.et.hibernate.lesson01.Emp" table="EMP" schema="SCOTT">
<!-- id标签告诉hibernate Emp类中empno是oid映射到EMP的主键EMPNO
precision长度 scale小数
-->
<id name="empno" type="java.lang.Short">
<column name="EMPNO" precision="4" scale="0" />
<!--
native(本地策略 根据数据库的不同采用不同的策略)
oracle调用数据库的hibernate_sequence.nextal
mysql调用表的自动增长
assigned(由开发者自己来传递主键的值,不会自动生成)
guid调用数据库生成32位guid
-->
<generator class="assigned" />
</id>
<property name="ename" type="java.lang.String">
<column name="ENAME">
<comment>员工姓名</comment>
</column>
</property>
<property name="job" type="java.lang.String">
<column name="JOB">
<comment>职位</comment>
</column>
</property>
<property name="mgr" type="java.lang.Short">
<column name="MGR" >
<comment>领导编号</comment>
</column>
</property>
<property name="hiredate" type="java.util.Date">
<column name="HIREDATE">
<comment>雇佣日期</comment>
</column>
</property>
<property name="sal" type="java.lang.Double">
<column name="SAL">
<comment>月薪</comment>
</column>
</property>
<property name="comm" type="java.lang.Double">
<column name="COMM">
<comment>奖金</comment>
</column>
</property>
<property name="sex" type="java.lang.String">
<column name="SEX"/>
</property>
</class>
</hibernate-mapping>
测试类
package cn.et.hibernate.lesson01;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
public class TestHibernate {
/**
* 新增
*/
@Test
public void testInsert(){
SessionFactory sf = new Configuration().configure("/cn/et/hibernate/lesson01/hibernate.cfg.xml").buildSessionFactory();
Session session = sf.openSession();
Transaction t = session.beginTransaction();
Emp emp = new Emp();
emp.setEmpno(Short.parseShort("8643"));
emp.setEname("胖污龟");
session.save(emp);
t.commit();
}
/**
* 删除
*/
@Test
public void testDelete(){
SessionFactory sf = new Configuration().configure("/cn/et/hibernate/lesson01/hibernate.cfg.xml").buildSessionFactory();
Session session = sf.openSession();
Transaction t = session.beginTransaction();
Emp emp = new Emp();
emp.setEmpno(Short.parseShort("8643"));
session.delete(emp);
t.commit();
}
/**
* 修改
* 先获取到这个对象,再把要修改的属性set进行,
* 再把这个对象设置回去,这样可以保存其它的数据不被丢失
*/
@Test
public void testUpdate(){
SessionFactory sf = new Configuration().configure("/cn/et/hibernate/lesson01/hibernate.cfg.xml").buildSessionFactory();
Session session = sf.openSession();
Transaction t = session.beginTransaction();
Emp emp = (Emp) session.get(Emp.class,Short.parseShort("8000"));
emp.setSal(Double.parseDouble("20000"));
session.update(emp);
t.commit();
}
}