第一个hibernate程序
来源:互联网 发布:农产品网络销售数据 编辑:程序博客网 时间:2024/05/19 20:56
一、hibernate介绍
1、什么是Hibernate?
数据持久层的框架有很多比如:iBATIS,myBatis,Nhibernate,Siena等等。Hibernate是用面向对象的思想来操作数据库的数据持久层的一个轻量级框架,并且Hibernate是一个开源的orm(Object relations mapping)框架,提供了查询获取数据的方法,节省了我们开发处理数据的时间。
2、Hibernate的优点
1)、使用简洁的hql语句(Hibernate query language)。可以不使用传统的insert,update等sql语句。比如insert一个对象,原来的做法是:insert into 表名称 alue(值1,值2,值3,……),而现在的做法是:save(对象)。
2)、使用orm映射。对象到关系数据库之间的映射。是从对象的角度操作数据库,再次体现了面向对象思想。原来的实体抽取方法:首先有了表,然后表映射实体对象。而现在Hibernate做法是:直接由对象映射到表。
3)、没有侵入性,移植性比较好。什么是没有侵入性?就是Hibernate采用了pojo对象。所谓的pojo对象就是没有继承Hibernate类或实现Hibernate接口。这样的话,此类就是一个普通的java类,所以移植性比较好。
4)、支持透明持久化。透明是针对上层而言的。三层架构的理念是上层对下层的依赖,只是依赖接口不依赖具体实现。而Hibernate中的透明是指对业务逻辑层提供了一个接口session,而其他的都封装隐藏。持久化是指把内存中的数据存放到磁盘上的文件中。
3、深度理解一下Hibernate
1)、Hibernate是对JDBC进一步封装
没有使用Hiberante做持久层开发时,存在很多冗余,如:各种JDBC语句,connection的管理。使用了Hibernate封装了JDBC,不再需要操作数据,直接操作Hibernate就行了。
2)、Hibernate是开源的一个ORM(对象关系映射)框架
ORM,即Object-Relational Mapping,它的作用就是在关系型数据库和对象之间做了一个映射。从对象(Object)映射到关系(Relation),再从关系映射到对象。这样,在操作数据库的时候,不需要再去和复杂SQL打交道,只要像操作对象一样操作它就可以了(把关系数据库的字段在内存中映射成对象的属性)。
3)、代码分层
典型的三层架构:表示层,业务层,还有持久层。Hiberante也是持久层的框架,而且持久层的框架还有很多,比如:IBatis,Nhibernate,JDO,OJB,EJB等等。
二、hibernate环境搭建
1、下载hibernate相关jar包,hibernate基于eclipse的插件。
2、导入hibernate相关jar包,安装hibernate基于eclipse的插件。
三、第一个hibernate程序
先配置hibernate的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 > <!-- 设置数据库驱动 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <!-- 设置数据库URL --> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property> <!-- 数据库用户名 --> <property name="hibernate.connection.username">root</property> <!-- 数据库密码 --> <property name="hibernate.connection.password">123456</property> <!-- 指定ddl的生成方式 --> <property name="hibernate.hbm2ddl.auto">create</property> <mapping resource="com/lhb/HibernateText/model/User.hbm.xml"/> </session-factory></hibernate-configuration>
其中的<mapping resource="com/lhb/HibernateText/model/User.hbm.xml"/>表示映射文件
创建Model类,相应代码如下:
package com.lhb.HibernateText.model;public class User {private int id;private String userNme;private String password;public User() {}public User(int id, String userNme, String password) {this.id = id;this.userNme = userNme;this.password = password;}public User(String userNme, String password) {this.userNme = userNme;this.password = password;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUserNme() {return userNme;}public void setUserNme(String userNme) {this.userNme = userNme;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "Urse [id=" + id + ", userNme=" + userNme + ", password=" + password + "]";}}配置映射文件,将hibernate和Model类关联起来,代码如下:
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!-- Generated 2017-1-9 9:28:56 by Hibernate Tools 3.5.0.Final --><hibernate-mapping><class name="com.lhb.HibernateText.model.User" table="USER"><id name="id" type="int"><column name="ID" /><generator class="assigned" /></id><property name="userNme" type="java.lang.String"><column name="USERNME" /></property><property name="password" type="java.lang.String"><column name="PASSWORD" /></property></class></hibernate-mapping>创建一个测试类,检测hibernate是否能运行成功,测试类使用eclipse自带的单元测试JUnit。使用了hibernate的核心接口,另附博文阐述。相关代码如下:
package com.lhb.HibernateText.model;import static org.junit.Assert.*;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.boot.registry.StandardServiceRegistryBuilder;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.junit.After;import org.junit.Before;import org.junit.Test;public class UserTest {SessionFactory sessionFactory;Transaction transaction;Session session;@Before//该方法运行在Text测试之前public void setUp() throws Exception {// 读取hibernate.cfg.xml文件Configuration config = new Configuration().configure();ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build();// 建立SessionFactorysessionFactory = config.buildSessionFactory(serviceRegistry);session = sessionFactory.openSession();transaction = session.beginTransaction();}@After//该方法运行在Text测试之后public void tearDown() throws Exception {transaction.commit();session.close();sessionFactory.close();}@Testpublic void test() {User user = new User(1002, "admin", "123456");session.save(user);}}数据库运行结果:
测试成功。
- 第一个Hibernate程序
- 第一个hibernate程序
- hibernate第一个程序
- 第一个hibernate程序
- 第一个hibernate程序
- 第一个Hibernate程序
- 第一个Hibernate程序
- 第一个Hibernate程序
- Hibernate第一个程序
- hibernate 第一个程序
- 第一个hibernate程序
- 第一个Hibernate程序
- Hibernate第一个程序
- 第一个hibernate程序
- Hibernate第一个程序
- Hibernate第一个程序
- 第一个hibernate程序
- 第一个hibernate程序
- 使用NoSQL Manager for MongoDB客户端连接mongodb
- 数据库三范式 简单理解
- android studio 添加lib 常见问题:
- vs2015::无法解析的外部符号 __snprintf
- Java之public class和class声明区别
- 第一个hibernate程序
- # hadoop2.7.3-spark2.0.2集群部署(备忘)
- block
- 2017内推笔试编程(二)
- 基于网络抓包实现kubernetes中微服务的应用级监控
- Java中的volatile关键字
- 微信小程序基础之在微信上显示和体验小程序?
- [VS]dll嵌入exe
- [课堂笔记]四.面向对象