[技术]hibernate初步学习(一)

今天初步学习了javaweb三大框架之一的hibernate, 可以通过面向对象的方式直接操作数据库


###hibernate 框架搭建 [

##导包
##创建库和表
##建立数据库对应实体
**成员变量用Long类型来接收数据库中Bigint类型的

##准备映射文件

*映射文件Customer.hbm.xml必须放在数据对应实体的同一个包下

 -导入DTD约束 web applib->hibernate-core->org.hibernate->hibernate-maping-3.0

  <!DOCTYPE hibernate-mapping PUBLIC 
     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 复制到映射文件头行

//因为本机没有连接互联网,需要更改本地xml配置

**preference->XML Catalog->add->file System ->导入准备好的hibernate-mapping3.dtd , keytype选择URI,key填写约束语句中的网址


 # - <!-- package属性:填写一个包名.后续配置中默认类所在包即为package属性填写的包 --> cn.itcast.domain
  - <!-- class元素: 映射表与类的对应
  name属性:填写完整类名
  table属性(可选):库中表名,默认使用类名做为表名.
 -->
- <!-- id元素:映射类中的主键属性(OID)与表中的主键列对应
  name属性:类中主键属性名.
  column属性(可选):表中的主键列名.默认列名就是属性名
  length属性(可选):配置当前列的长度.默认值:数据库对应类型最大长度.
  type属性(可选):指定当前列(属性)的类型.默认值:自动检测属性类型.自动根据检测配置.
   -->
  - <!-- generator元素:主键生成策略.决定对象在执行保存时,主键值如何获得.
  代理主键: 表达业务之外的字段.没有业务意义.
  increment: 先查询表中的id最大值.加1作为新的主键值.有线程安全问题.测试时使用
  *identity:依赖于数据库中的主键自增.
  *sequence:使用Oracle中的序列来生成id值.
  hilo(用不到):hibernate通过高低位算法来实现主键自增效果.
  *native:自动三选一.identity|sequence|hilo
  uuid:字符串类型主键.生成随机字符串作为主键.注意长度应超过32位.
  自然主键:包含业务意义.
  *assigned:手动指定id值.
    -->
   -  <!-- property元素:映射普通列 
  name属性:类中属性名.
  column属性:表中的列名.
  length属性(可选):配置当前列的长度.默认值:数据库对应类型最大长度.
  type属性(可选):指定当前列(属性)的类型.默认值:自动检测属性类型.自动根据检测配置.
  --> 

##主配置文件 src下,建立hibernate.cfg.xml
!除了正常配置mysql驱动,jdbc连接,账户密码外, 还要额外配置方言dialect ,从hibernate-corejar包中找出dialect.MySQLDialect导入
-接着配置打印SQL语句到控制台,对生成的SQL语句进行格式化
-配置c3p0连接池路径
-配置映射文件所在的路径
##创建a_hello/Demo类测试,hibernate操作数据库面向对象的情况
#fun1 {
//1 创建配置读取对象,并读取配置
Configuration conf = new Configuration().configure();
//2 创建sessionFactory
SessionFactory sf = conf.buildSessionFactory();
//3 获得session
Session session = sf.openSession();
//4  打开事务
Transaction tx = session.beginTransaction();
//5 执行操作
//-----------------------------------------------
//保存客户
Customer c = new Customer();
c.setCust_name("程序员");
session.save(c);
//-----------------------------------------------
//6 提交事务
tx.commit();
    //7 释放资源
session.close();
sf.close();
}

]  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值