首页 > 代码库 > 初始Hibernate框架技术
初始Hibernate框架技术
hibernate:
定义:ORM:Object Relational Mapping 对象 关系 映射
使用hibernate时几个必要的:
1、实体类
2、映射文件(类 -数据库表,属性-字段)【实体类名.hbm.xml】
3、配置文件:数据库连接信息(两个配置:hibernate.cfg.xml(数据库配置文件)和实体类名.hbm.xml(映射配置文件))
4、必要架包
- hibernate(主框架)
- ojdbc jdbc
- jta 允许应用程序执行分布式事务处理——在两个或多个网络计算机资源上访问并且更新数 据:针对数据读取
- commons-collections 各种集合类和集合工具类封装
- dom4j xml解析
- javassist 分析、编辑和创建Java字节码的类库:针对字节码的
- slf4j-api 记录hibernate的日志接口
- slf4j-nop 、、
其他笔记:
在代码中都会有注释
hibernate.cfg.xml(数据库配置文件):
1 <!DOCTYPE hibernate-configuration PUBLIC 2 "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 3 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 4 5 <hibernate-configuration> 6 <session-factory> 7 8 <!-- 指定oracle对应得dialect --> 9 <property name="dialect">10 org.hibernate.dialect.Oracle10gDialect11 </property>12 <!-- 数据库jdbc驱动 -->13 <property name="connection.driver_class">14 oracle.jdbc.driver.OracleDriver15 </property>16 17 <!-- 数据库url -->18 <property name="connection.url">19 jdbc:oracle:thin:@localhost:1521:XE20 </property>21 <!-- 用户名 -->22 <property name="connection.username">user_admin</property>23 <!-- 用户密码 -->24 <property name="connection.password">abc123</property>25 26 <!-- session范围和上下文 -->27 <property name="current_session_context_class">thread</property>28 <!-- 是否在运行期间生成的SQL输出到日志以供调试 -->29 <property name="show_sql">true</property>30 <!-- 是否格式化sql -->31 <property name="format_sql">true</property>32 <!-- 映射 -->33 <mapping resource="cn/cy/Hibernate/entity/Dept.hbm.xml" />34 </session-factory>35 </hibernate-configuration>
实体类名.hbm.xml(映射配置文件):
1 <?xml version="1.0"?> 2 <!DOCTYPE hibernate-mapping PUBLIC 3 "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 4 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 5 6 7 <hibernate-mapping> 8 <!-- 与关键字冲突 ”~~“解决 --> 9 <class name="cn.cy.Hibernate.entity.Dept" table="dept">10 <!-- 当数据库里面的列明与java属性一致时,我们可以省略colnumn -->11 <id name="deptno" column="deptno">12 <generator class="sequence">13 <!--索引-->14 <param name="sequence">seq_index</param>15 </generator>16 </id>17 <property name="deptname" column="deptname" type="java.lang.String" />18 <property name="loc" column="loc" type="java.lang.String"/>19 </class>20 </hibernate-mapping>21
实体类:
1 package cn.cy.Hibernate.entity; 2 3 import java.io.Serializable; 4 5 public class Dept implements Serializable{ 6 //属性 7 private int deptno; 8 private String deptname; 9 private String loc;10 //构造方法11 public Dept(){12 13 14 }15 //16 public int getDeptno() {17 return deptno;18 }19 20 public void setDeptno(int deptno) {21 this.deptno = deptno;22 }23 24 public String getDeptname() {25 return deptname;26 }27 28 public void setDeptname(String deptname) {29 this.deptname = deptname;30 }31 32 public String getLoc() {33 return loc;34 }35 36 public void setLoc(String loc) {37 this.loc = loc;38 }39 40 41 }
测试类:
使用hibernate的几个步骤:
1 package cn.cy.Hibernate.Test; 2 3 import org.hibernate.Session; 4 import org.hibernate.SessionFactory; 5 import org.hibernate.Transaction; 6 import org.hibernate.cfg.Configuration; 7 8 import cn.cy.Hibernate.entity.Dept; 9 10 11 /**12 * 测试类13 * @author Administrator14 *15 */16 public class Test {17 public static void main(String [] args){18 /**19 * 测试方法20 */21 if(addDept()){22 System.out.println("保存成功");23 }24 25 }26 /**27 *测试hibernate框架的测试类28 **/29 public static boolean addDept(){30 boolean flag=false;31 Configuration conf=null;32 SessionFactory factory=null;33 Session session=null;34 Transaction trans=null;35 try {36 //读取配置文件37 conf=new Configuration().configure();38 //创建sessionfactory39 factory=conf.buildSessionFactory();40 //打开会话41 session=factory.openSession();42 //开启事务43 trans=session.beginTransaction();44 Dept dept=new Dept();45 //当设置了gennerator为sequence时,不给参数是以指定sequence填值46 dept.setDeptno(200);47 dept.setDeptname("开发部");48 dept.setLoc("成都");49 //持久化50 //session.save(dept);51 //session.delete(dept);52 //Dept dp=(Dept)session.get(Dept.class, 1);//没有数据,返回空值53 //System.out.println(dp.getDeptname());54 Dept dp=(Dept)session.load(Dept.class, 1);//没有数据,报异常55 System.out.println(".....");56 System.out.println(dp.getDeptname());57 58 59 60 //提交事务61 trans.commit();62 63 flag=true;64 } catch (Exception e) {65 e.printStackTrace();66 trans.rollback();67 }finally{68 if(session!=null){69 session.close();70 71 }72 }73 74 75 return flag;76 77 }78 }79
在测试中遇到的exception:
因为在上课时忘记将错误信息保存下来,所以在这里不做详细错误描述:
配置文件一定严格书写,地址一定准确!
总之如果按照上述的配置过程配置,出现错误时:
- 方法alt不出来,检查架包是否build;
- 运行代码后,如果提示sequence不存在的,检查param节点;
- 如果是其他与数据库相关的,检查自己数据库的约束等等
- 以上是我遇到的错误,其他的错误暂时没遇到!
初始Hibernate框架技术
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。