热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:Hibernate基础

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Hibernate基础相关的知识,希望对你有一定的参考价值。×ORM(

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Hibernate 基础相关的知识,希望对你有一定的参考价值。


× ORM (Object/Relationsship Mapping):对象/关系映射
  利用面向对象思想编写的数据库应用程序最终都是把对象信息保存在关系型数据库中,于是要编写很多的底层数据库相关的SQL语句。便有了ORM

过多编写底层SQL语句的弊端:
  1.不同的数据库使用的SQL语法不通。比如PL/SQL(Oracle)与T/SQL(Microsoft[SQLServer])
  2.同样的功能在不同的数据库中有不同的实现方式。比如:分页SQL
  3.程序过分你依赖SQL会对程序的移植、扩展以及维护等待来很大的隐患

× 常见的ORM框架:EJB(JAVAEE规范)[ 重量级ORM框架技术 ]、Hibernate、MyBatis(IBatis)[ Apache ]、TopLink(Oracle AS TopLink)[ Oracle ] 、OJB

× 使用JUnit进行单位测试注解和执行顺序:@Before:初始化方法 -->  @Test:测试方法 -->  @After:释放资源

一、Hibernate简介
  Hibernate是Java领域的一款开源ORM框架技术(对JDBC进行了轻量级的对象封装 [ 间接(底层)使用了JDB技术 ])
  技术分享

  作用:开发不同数据的应用程序,省去对SQL语句细节的较劲,专心对逻辑程序进行开发。

  持久化层:介于对象信息与数据信息的相互转换,说白了就是将对象信息存入数据库 或 从数据库提取信息以对象形式进行封装。

二、搭建Hibernate准备
  1. 开发工具:MyEclipse / Eclipse
  2. 插件:Hibernate Tools for Eclipse Plugins(JBoss推出综合开发工具插件[for Eclipse],可简化ORM框架Hibernate,以及JBoss Seam,EJB3等的开发工作)
  3. jar包:

    3.1 Hibernate jar包  eg : MyEclipse已有集成的Facet使用,但Eclipse需要导入关键jar包

    3.2 数据库jar包   eg : mysql:mysql-connector-java-x.x.x-bin.jar
    3.3 测试工具JUNIT jar包 junit-x.xx.jar

三、基础Hibernate建设步骤

 3.1 正向创建步骤:通过JavaBean(类),进行映射文件创建,通过执行访问数据库的代码,创建数据表并写入数据。
    1. 创建Hibernate的配置文件
    2. 创建持久化类
    3. 创建对象-关系映射文件
    4. 通过Hibernate API编写访问数据库的代码

 3.2 逆向创建步骤:通过Datatable(数据表),

 

 

 3.1 正向创建(路径) : create cfg.xml -->create class -->create hbm.xml --[执行通过Hibernate API编写访问数据库的代码]--create datatable--write data-->End
  
1) 创建Hibernate配置文件(Hibernate.cfg.xml)[hibernate.cfg.xml常用配置]


技术分享技术分享

1 <hibernate-configuration>
2 <session-factory>
3
4 <property name="connection.url">
5 jdbc:mysql:///hibernate?useUnicode=true&characterEncoding=UTF-8
6 property>
7
10 <property name="connection.username">rootproperty>
11 <property name="connection.password">rootproperty>
12 <property name="connection.driver_class">com.mysql.jdbc.Driverproperty>
13
16 <property name="dialect">org.hibernate.dialect.MySQL5Dialectproperty>
17
18
19 <property name="show_sql">trueproperty>
20 <property name="format_sql">trueproperty>
21 <property name="hbm2ddl.auto">createproperty>
22
23
24 <mapping resource="Student.hbm.xml" />
25 session-factory>
26 hibernate-configuration>


Hibernate.cfg.xml

  2) 创建持久化类


//创建一个符合JavaBean规范的类即可

  3) 创建对象映射文件(ClassName.hbm.xml)[ClassName.hbm.xml常用配置]


技术分享技术分享

1 <hibernate-mapping>
2 <class name="类名" table="数据表名">
3
4 <id name="id" type="int">
5 <column name="ID" />
6 <generator class="assigned" />
7 id>
8
9 <property name="属性名" type="属性类型(需要全称)">
10 <column name="字段名" />
11 property>
12 class>
13 hibernate-mapping>
14
15
16 <hibernate-mapping>
17 <class name="Student" table="STUDENT">
18
19 <id name="id" type="int">
20 <column name="ID" />
21 <generator class="assigned" />
22 id>
23
24 <property name="name" type="java.lang.String">
25 <column name="NAME" />
26 property>
27 <property name="gender" type="java.lang.String">
28 <column name="GENDER" />
29 property>
30 <property name="birthday" type="java.util.Date">
31 <column name="BIRTHDAY" />
32 property>
33 <property name="address" type="java.lang.String">
34 <column name="ADDRESS" />
35 property>
36 class>
37 hibernate-mapping>


ClassName.hbm.xml

  4) 通过Hibernate API编写访问数据库的代码
  步骤:创建配置对象 --> 创建服务注册对象 --> 创建会话工厂对象 --> 打开会话  -->  开启事务
  在JUnit下调试,上代码!!!【Hibernate Session相关点】


技术分享技术分享

1 private SessionFactory sessionFactory;
2 private Session session;
3 private Transaction transaction;
4
5 @Before
6 public void init() {
7 // 1.创建配置对象
8 Configuration cOnfig= new Configuration().configure();
9
10 // 2.创建服务注册对象
11 ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
12
13 // 3.创建会话工厂
14 sessiOnFactory= config.buildSessionFactory(serviceRegistry);
15
16 // 4.打开会话对象
17 session = sessionFactory.openSession();
18
19 // 5.开启事务
20 transaction = session.beginTransaction();
21 }
22
23 @After
24 public void destory() {
25 // 提交事务
26 transaction.commit();
27 // 关闭资源
28 session.close();// 关闭会话
29 sessionFactory.close();// 关闭会话工厂
30 }
31
32 @Test
33 public void testSaveStudent() {
34 Student student = new Student(1, "测试1", "男", new Date(), "地址1");
35 session.save(student);// 保存对象进入数据库
36 }


Base Create Code

 3.2 逆向创建(步骤):

 To be continued





















推荐阅读
  • 在处理遗留数据库的映射时,反向工程是一个重要的初始步骤。由于实体模式已经在数据库系统中存在,Hibernate 提供了自动化工具来简化这一过程,帮助开发人员快速生成持久化类和映射文件。通过反向工程,可以显著提高开发效率并减少手动配置的错误。此外,该工具还支持对现有数据库结构进行分析,自动生成符合 Hibernate 规范的配置文件,从而加速项目的启动和开发周期。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 本文详细介绍了在CentOS 6.5 64位系统上使用阿里云ECS服务器搭建LAMP环境的具体步骤。首先,通过PuTTY工具实现远程连接至服务器。接着,检查当前系统的磁盘空间使用情况,确保有足够的空间进行后续操作,可使用 `df` 命令进行查看。此外,文章还涵盖了安装和配置Apache、MySQL和PHP的相关步骤,以及常见问题的解决方法,帮助用户顺利完成LAMP环境的搭建。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 本文深入探讨了如何利用Maven高效管理项目中的外部依赖库。通过介绍Maven的官方依赖搜索地址(),详细讲解了依赖库的添加、版本管理和冲突解决等关键操作。此外,还提供了实用的配置示例和最佳实践,帮助开发者优化项目构建流程,提高开发效率。 ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • 在本地环境中部署了两个不同版本的 Flink 集群,分别为 1.9.1 和 1.9.2。近期在尝试启动 1.9.1 版本的 Flink 任务时,遇到了 TaskExecutor 启动失败的问题。尽管 TaskManager 日志显示正常,但任务仍无法成功启动。经过详细分析,发现该问题是由 Kafka 版本不兼容引起的。通过调整 Kafka 客户端配置并升级相关依赖,最终成功解决了这一故障。 ... [详细]
  • Spring框架的核心组件与架构解析 ... [详细]
  • PHP与MySQL的Web应用开发技术深入解析
    PHP与MySQL的Web应用开发技术深入解析 ... [详细]
  • 本文探讨了利用Java实现WebSocket实时消息推送技术的方法。与传统的轮询、长连接或短连接等方案相比,WebSocket提供了一种更为高效和低延迟的双向通信机制。通过建立持久连接,服务器能够主动向客户端推送数据,从而实现真正的实时消息传递。此外,本文还介绍了WebSocket在实际应用中的优势和应用场景,并提供了详细的实现步骤和技术细节。 ... [详细]
  • 在数据库设计中,谨慎使用外键至关重要。本文探讨了九个关键原因,包括数据完整性的维护、性能优化、系统复杂性的管理、数据迁移的灵活性以及对外部系统的依赖性控制。通过深入分析这些因素,可以帮助开发人员和架构师做出更明智的设计决策,确保数据库系统的高效与稳定。 ... [详细]
  • 在探讨Hibernate框架的高级特性时,缓存机制和懒加载策略是提升数据操作效率的关键要素。缓存策略能够显著减少数据库访问次数,从而提高应用性能,特别是在处理频繁访问的数据时。Hibernate提供了多层次的缓存支持,包括一级缓存和二级缓存,以满足不同场景下的需求。懒加载策略则通过按需加载关联对象,进一步优化了资源利用和响应时间。本文将深入分析这些机制的实现原理及其最佳实践。 ... [详细]
  • 如何使用mysql_nd:Python连接MySQL数据库的优雅指南
    无论是进行机器学习、Web开发还是爬虫项目,数据库操作都是必不可少的一环。本文将详细介绍如何使用Python通过 `mysql_nd` 库与 MySQL 数据库进行高效连接和数据交互。内容涵盖以下几个方面: ... [详细]
  • 润乾报表JNDI配置异常分析与解决方法
    在使用润乾报表时,通过JNDI连接数据源是常见的配置方式。本文详细分析了JNDI配置异常的原因,并提供了具体的解决方法。重点讨论了JNDI名称在三个关键位置的配置:1. Tomcat或应用服务器的数据源配置(以Tomcat为例);2. 润乾报表中的数据源配置;3. 应用程序代码中的JNDI名称引用。通过这些步骤,可以有效解决JNDI配置异常问题,确保报表系统的稳定运行。 ... [详细]
author-avatar
佳华雅惠妤坚
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有