Hibernate 连接Oracle
-
创建 WEB 项目 hdemo
-
将以下 JAR 文件拷贝到 hdemo/WebRoot/WEB-INF/lib 目录下
1.1 antlr-2.7.6.jar
1.2 commons-collections-3.1.jar
1.3 dom4j-1.6.1.jar
1.4 hibernate-jpa-2.0-api-1.0.1.Final.jar
1.5 hibernate3.jar
1.6 javassist-3.12.0.GA.jar
1.7 jta-1.1.jar
1.8 log4j-1.2.17.jar
1.9 ojdbc6.jar
1.10 slf4j-api-1.6.1.jar
1.11 slf4j-log4j12-1.6.1.jar -
创建源码目录 hdemo/resources ,并将 log4j.properties 文件导入其中
-
创建 Hibernate 配置文件:hdemo/resources/hibernate.cfg.xml ,并键入如下代码:
<?xml version='1.0' encoding='utf-8'?> <!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> <!--数据库URL --> <property name="connection.url">jdbc:oracle:thin:@192.168.199.156:1521:orcl</property> <!--数据库用户 --> <property name="connection.username">system</property> <!--数据库用户密码 --> <property name="connection.password">ok</property> <!--数据库JDBC驱动 --> <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <!--每个数据库都有其对应的Dialect以匹配其平台特性 --> <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property> <!--指定当前session范围和上下文 --> <property name="current_session_context_class">thread</property> <!--是否将运行期生成的SQL输出到日志以供调试 --> <property name="show_sql">true</property> <!--是否格式化SQL --> <property name="format_sql">true</property> <mapping resource="cn/hibernatedemo/entity/Employee.hbm.xml" /> </session-factory> </hibernate-configuration>
假设oracle服务器地址为:
192.168.199.156
,监听端口为:1521
,连接的数据库为:orcl
-
在 src 中创建 entity 包,并创建实体类 Employee类:
package entity; import java.io.Serializable; import java.util.Date; public class Employee implements Serializable { private Integer empno; private String ename; private String job; private Integer mgr; private Date hiredate; private Double sal; private Double comm; private Integer deptno; public Integer getEmpno() { return empno; } public void setEmpno(Integer 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 Integer getMgr() { return mgr; } public void setMgr(Integer 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 Integer getDeptno() { return deptno; } public void setDeptno(Integer deptno) { this.deptno = deptno; } }
-
在包
entity
中创建映射文件 Employee.hbm.xml:<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="entity.Employee" table="EMPLOYEE" dynamic-update="true"> <id name="empno" column="empno" type="java.lang.Integer"> <generator class="assigned"/> </id> <property name="ename" type="java.lang.String" column="ename"/> <property name="job" type="java.lang.String" column="job"/> <property name="mgr" type="java.lang.Integer" column="mgr"/> <property name="hiredate" type="java.util.Date" column="hiredate"/> <property name="sal" type="java.lang.Double" column="sal"/> <property name="comm" type="java.lang.Double" column="comm"/> <property name="deptno" type="java.lang.Integer" column="deptno"/> </class> </hibernate-mapping>
-
在 src 中创建包 dao
-
在 dao 包中创建类 HibernateUtil:
package dao; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil { // 连接对象 private static Configuration configuration; // 会话工厂 private final static SessionFactory sessionFactory; static { try { // 读取配置文件 configuration = new Configuration().configure(); // 创建会话工厂 sessionFactory = configuration.buildSessionFactory(); } catch (HibernateException ex) { throw new ExceptionInInitializerError(ex); } } private HibernateUtil() { } /** * 创建会话 * @return */ public static Session currentSession() { return sessionFactory.getCurrentSession(); } }
-
在 dao 包中创建类 EmployeeDao:
package dao; import entity.Employee;