hibernate入门之oracle连接

1.搭建hibernate环境

导入jar包,由于hibernate会有日志输出,本身没有对日志处理的jar包,所以需要另外导入hibernate-entitymanager是hibernate一套规范,所以也是需要的

所有必须jar包下载地址:http://download.csdn.net/detail/m0_37983376/9864698

2.创建实体类

package com.sq.entity;
/**
 *@author sq
 *
 */
public class User {
	/**
	 * hibernate 要求实体类有一个属性是唯一的
	 */
	private String uid;
	private String username;
	private String password;
	public String getUid() {
		return uid;
	}
	public void setUid(String uid) {
		this.uid = uid;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	@Override
	public String toString() {
		return "User [uid=" + uid + ", username=" + username + ", password="
				+ password + "]";
	}
	
}
(1)使用hibernate不需要手动创建表,hibernate会自动帮你创建

3.配置hibernate实现数据库表与实体类一一对应关系(映射关系)

(1)实用配置文件实现映射关系

  • 创建一个xml的配置文件,名称位置没有固定要求

建议:在实体类的包下面创建,名称:实体类.hbm.xml

  • 引入dtd约束

  • 配置实体类和数据表的对应关系
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
	<!-- 1.配置类和表对应
		class标签
		name属性:实体类全路径名
		table属性:数据库表名称
	 -->
	<class name="com.sq.entity.User" table="t_user">
		<!-- 2.配置实体类id和表id对应
			hibernate要求实体类有一个属性唯一值
			hibernate要求表有字段作为唯一值
		 -->
		 <!-- id标签
		 	name属性:实体类里面id属性名称
		 	column属性:生成表字段名称
		  -->
		 <id name="uid" column="uid">
		 	<!-- 设置数据库表id增长策略 
		 		native:生成的表id值就是主键自动增长
		 	-->
		 	<generator class="native"></generator>
		 </id>
		 <!-- 3.配置其他属性和表字段对象
		 	name属性:实体类属性名称
		 	column属性:生成表字段名称
		  -->
		 <property name="username" column="username"></property>
		 <property name="password" column="password"></property>
	</class>
</hibernate-mapping>

4.创建hibernate核心配置文件

     (1)核心配置文件xml,名称和位置是固定的,位置必须在src下面,名称必须为hibernate.cfg.xml
(2)引入dtd约束
(3)hibernate只会加载核心配置文件
<?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>
		<!-- 1.配置数据库的信息 必须有-->
		<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
		<property name="hibernate.connection.username">sq</property>
		<property name="hibernate.connection.password">sq</property>
		<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
		<!-- 2.配置hibernate信息 可选-->
		<!-- 输出底层sql语句 -->
		<property name="hibernate.show_sql">true</property>
		<!-- 输出底层sql语句格式 -->
		<property name="hibernate.format_sql">true</property>
		<!-- hibernate帮创建表,需要配置之后 
			update:如果已有表,会更新,没有会创建
		-->
		<property name="hibernate.hbm2ddl.auto">update</property>
		<!-- 配置数据库方言
			在mysql里面实现分页关键字limit,只能使用mysql里面
			在oracle数据库,实现分页rownum
			让hibernate框架识别不同数据库的语句
		 -->
		<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
		
		<!-- 3.把映射文件放入到核心配置文件中 必须的-->
		<mapping resource="com/sq/entity/User.hbm.xml"/>
	</session-factory>		
</hibernate-configuration>

5.实现添加操作

     (1)加载hibernate核心配置文件
(2)创建Sessionfactory对象
(3)使用Sessionfactory创建session对象
(4)开启事物
(5)写具体逻辑crud操作
(6)提交事务
(7)关闭资源

package com.sq.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;

import com.sq.entity.User;

/**
 *@author sq
 *
 */
public class Demo {
	
	@Test
	public void test(){
//		(1)加载hibernate核心配置文件
		//到src下面找到名称是hibernate.cfg.xml
		//在hibernate里面封装对象
		Configuration cfg = new Configuration();
		cfg.configure();
		
//		(2)创建Sessionfactory对象
		//读取hibernate核心配置文件内容,创建sessionFactory
		//在过程中,根据映射关系,在配置数据库里面把表建立好
		SessionFactory sf = cfg.buildSessionFactory();
		
//		(3)使用Sessionfactory创建session对象
		Session session = sf.openSession();
		
//		(4)开启事物
		Transaction tx = session.beginTransaction();
		
//		(5)写具体逻辑crud操作
		User user = new User();
		user.setUsername("sq");
		user.setPassword("sq");
		//调用session里面的方法实现添加
		session.save(user);
		
//		(6)提交事务
		tx.commit();

//		(7)关闭资源
		session.close();
		sf.close();
	}
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值