Hibernate入门

一、hibernate是什么?
hibernate是对jdbc进行轻量级封装的ORM框架,充当项目的持久层

二、什么是ORM?
object relation mapping  对象关系映射,为了解决面向对象与关系数据库之间不匹配的技术,将java对象自动持久化到关系数据库中。本质上就是将一种形式转换成另一种形式。使用ORM技术可以在Java中以类和对象的方式去操控数据表和记录

三、使用hibernate的好处
    程序员关注业务实现,数据库人员关注数据操作,工作角色细化,提高效率
    分层清晰,降低耦合性
    通用性强,轻松转移至其他数据平台
    对象化;
    性能保证,hibernate根据不同数据库,使用最优语句
    

四、学习hibernate的三个重点:

  • hibernate api;
  • hibernate.cfg.xml(核心配置文件)
  • 对象关系映射文件

五、hibernate开发方式的三种方式:     

  • 由Domain object -> mapping->db。(官方推荐)
  • 由DB开始,用工具生成mapping和Domain object。(使用较多)
  • 由映射文件开始

 

六、简单的Hibernate开发流程

  • 创建一个项目
  • 画出简单的项目框架示意图
  • 引入项目开发所需要的jar包

必须的

连接oracle数据库的      或 其他数据库的(...)

 

 

  • 创建表
create table employee(
id number primary key,
name varchar2(64) not null,
email varchar2(64) not null,
hiredate date not null)

--创建一个序列
create sequence emp_seq
start with 1
increment by 1
minvalue 1
nomaxvalue
nocycle
nocache
  • 开发domain对象和对象关系映射文件(domain名.hbm.xml 【反射机制】

Employee.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">

<hibernate-mapping package="com.hsp.domain">
	<class name="Employee" table="employee">
	<!-- id元素用于指定主键属性 -->
	<id name="id" column="id" type="java.lang.Integer">
	<!-- 该元素用于指定主键值生成策略hilo native increment sequence uuid -->
	<generator class="sequence">
	<param name="sequence">emp_seq</param>
	</generator>
	</id>
	<!-- 对其它属性还有配置 -->
	<property name="name" type="java.lang.String">
	<column name="name" not-null="false"  />
	</property>
	<property name="email" type="java.lang.String" >
	<column name="email" not-null="false"/>
	</property>
	<property name="hiredate" type="java.util.Date">
	<column name="hiredate" not-null="false" />
	</property>
	</class>
	
</hibernate-mapping>
  • 配置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">
<hibernate-configuration>
<session-factory>
	<!-- hibernate 设计者,给我们提供了一写常用的配置 -->
	<!-- 配置使用的driver -->
	<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
	<property name="connection.username">scott</property>
	<property name="connection.password">tiger</property>
	<property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:orclhsp</property>
	<!-- 配置dialect方言,明确告诉hibernate连接是哪种数据库 -->
	<property name="dialect">org.hibernate.dialect.OracleDialect</property>
	<!-- 显示出对于sql -->
	<property name="show_sql">true</property>
	<!-- 指定管理的对象映射文件 -->
	<mapping resource="com/hsp/domain/Employee.hbm.xml"/>
</session-factory>
</hibernate-configuration>
  • 测试:创建configuration读取hibernate.cfg.xml文件,创建SessionFactory,Session,用对象进行持久化操作

测试文件TestMain.java



public class TestMain {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//我们使用hibernate完成crud操作[这里我们只见对象,不见表]
		//现在我们不是用service ,直接测试.
		//1。创建Configuration,该对象用于读取hibernate.cfg.xml,并完成初始化
		Configuration configuration=new Configuration().configure();
		//2.创建SessoinFactory[这是一个会话工厂,是一个重量级的对象]
		SessionFactory sessionFactory=configuration.buildSessionFactory();
		//3.创建Sessoin 相当于jdbc Connection[ servelt HttpSession ,也不是 jsp session]
		Session session=sessionFactory.openSession();
		//4.对hiberate而言,要求程序员,在进行 增加,删除,修改的时候使用事务提交,
		Transaction transaction = session.beginTransaction();
		//添加一个雇员
		Employee employee=new Employee();
		employee.setName("shunping");
		employee.setEmail("shunping@sohu.com");
		employee.setHiredate(new Date());
		//insert .............
		//保存
		session.save(employee);//save employee就是持久化该对象 (把对象保存到了数据库中称为一条记录)
		//==>insert into ....[被hiberante封装]
		//提交
		transaction.commit();
		session.close();
	}
	

七、hibernate的load()方法

//修改用户

//获取一个会话

Session session=MySessionFactory.getSessionFactory().openSession();

 

 

Transaction ts=session.beginTransaction();

//修改用户1. 获取要修改的用户,2.修改

//load是通过主键属性,获取该对象实例.<--->表的记录对应

Employee emp=(Employee) session.load(Employee.class, 3);

emp.setName("123");//update...无需使用update方法,

emp.setEmail("abc@sohu.com");

ts.commit();//提交之后自动写入一条update语句

八、使用hibernate切换成mysql数据库

1、修改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">

<hibernate-configuration>

<session-factory>

<!-- hibernate 设计者,给我们提供了一写常用的配置 -->

<!-- 配置使用的driver -->

<property name="connection.driver_class">com.mysql.jdbc.Driver</property>

<property name="connection.username">root</property>

<property name="connection.password">root</property>

        <property name="connection.url">jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf8</property>

<!-- 配置dialect方言,明确告诉hibernate连接是哪种数据库 -->

<property name="dialect">org.hibernate.dialect.MySQLDialect</property>

<!-- 显示出对于sql -->

<property name="show_sql">true</property>

<!-- 让hibernate给我们自动创建表 create :每次执行创建新表,update:不存在表或者表空间有变化则创建新表. -->

<property name="hbm2ddl.auto">create(update)</property>

<!-- 指定管理的对象映射文件 -->

<mapping resource="com/hsp/domain/Employee.hbm.xml"/>

</session-factory>

</hibernate-configuration>

2、修改Emplyee.hbm.xml文件配置

<!-- 对主键生成策略我们做了修改 -->

<id name="id" column="id" type="java.lang.Integer">

<generator class="increment"></generator>

</id>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值