- 浏览: 240099 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
akka_li:
学习了!但是为什么后续的没有了?!
EJB4:RMI和RMI-IIOP -
springaop_springmvc:
apache lucene开源框架demo使用实例教程源代码下 ...
Lucene学习笔记(一)Lucene入门实例 -
qepipnu:
求solr 客户端 jar包
Solr学习笔记(三)Solr客户端开发实例 -
zhangbc:
是这问题,赞!
Oracle Start Up 2 Oracle 框架构件、启动、解决一个问题 -
feilian09:
查询 select hibernate jdbc 那个效率快
Hibernate,JDBC性能探讨
1. 生成表
两种方法,方法一,在Hibernate.cfg.xml配置文件中添加如下配置,则App运行过程中如数据库中表不存在,或根据相关条件生成新表,配置如下
<property name="hbm2ddl.auto">update</property>
方法二,运用SchemaExport生成新表,如下代码
SchemaExport se = new SchemaExport(new AnnotationConfiguration().configure());
se.create(true, true);
}
为了和Hibernate 备忘录-续风格统一,这里对本文做一修改,本文包括一对一外键单向关联、一对一外键双向关联、一对一主键单向关联、一对一主键双向关联、联合主键5个部分,每部分包括:描述、Annotation配置、结果说明,老版本Hibernate的XML配置;
2. 一对一单向外键关联
2.1 如下图所示为一个一对一关系的映射,这里所有都用这个映射为例;
如上图,Husband和Wife为一对一关系,
2.2Annotation配置代码
@Entity public class Husband { private int id; private String name; private Wife wife; @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @OneToOne(cascade=CascadeType.ALL) @JoinColumn(name="wifeId") public Wife getWife() { return wife; } public void setWife(Wife wife) { this.wife = wife; } }
@Entity public class Wife { private int id; private String name; @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
2.3、此配置下数据库中生成表结构如下:
2.4、老版本HibernateXML配置
<hibernate-mapping> <class name="com.kylin.test.Husband" dynamic-update="true"> <id name="id"> <generator class="native"></generator> </id> <property name="name"/> <many-to-one name="wife" column="wideId" unique="true"></many-to-one> </class> </hibernate-mapping>
<hibernate-mapping> <class name="com.kylin.test.Wife" dynamic-update="true"> <id name="id"> <generator class="native"></generator> </id> <property name="name"/> </class> </hibernate-mapping>
3. 一对一双向外键关联
3.1 同上一Husband Wife来描述一对一双向外键关联
3.2 给出Annotation配置代码
@Entity public class Husband { private int id; private String name; private Wife wife; @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @OneToOne @JoinColumn(name="wifeId") public Wife getWife() { return wife; } public void setWife(Wife wife) { this.wife = wife; } }
@Entity public class Wife { private int id; private String name; private Husband husband; @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @OneToOne(mappedBy="wife") public Husband getHusband() { return husband; } public void setHusband(Husband husband) { this.husband = husband; } }
3.3、数据库中生成表如下
3.4、老版本XML
<hibernate-mapping> <class name="com.kylin.test.Husband" dynamic-update="true"> <id name="id"> <generator class="native"></generator> </id> <property name="name"/> <many-to-one name="wife" column="wideId" unique="true"></many-to-one> </class> </hibernate-mapping>
<hibernate-mapping> <class name="com.kylin.test.Wife" dynamic-update="true"> <id name="id"> <generator class="native"></generator> </id> <property name="name"/> <one-to-one name="husband" property-ref="wife"></one-to-one> </class> </hibernate-mapping>
3.5比较 。 运行结果和上面2导出的表相同;
总结比较Annotation配置和XML配置,
第一、使用XML配置核心要注意点:
<many-to-one name="wife" column="wideId" unique="true"></many-to-one>
<one-to-one name="husband" property-ref="wife"></one-to-one>
如上分别为Husband.hbm.xml和Wife.hbm.xml上指定一对一双向映射的配置,其中Wife中property-ref值必须与Husband中name值相同
第二、明显Annotation配置更容易明白,XML配置比较难理解,所以一般采取Annotation;
4. 一对一单向主键关联
4.1 用Husband及Wife为例说明
4.2 Annotation配置代码
@Entity public class Husband { private int id; private String name; private Wife wife; @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @OneToOne(cascade=CascadeType.ALL) @PrimaryKeyJoinColumn public Wife getWife() { return wife; } public void setWife(Wife wife) { this.wife = wife; } }
@Entity public class Wife { private int id; private String name; @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
4.3.导出的表结构
4.4XML配置
<hibernate-mapping> <class name="com.kylin.test.Husband" dynamic-update="true"> <id name="id"> <generator class="foreign"> <param name="property">wife</param> </generator> </id> <property name="name"/> <one-to-one name="wife" constrained="true"></one-to-one> </class> </hibernate-mapping>
<hibernate-mapping> <class name="com.kylin.test.Wife" dynamic-update="true"> <id name="id"> <generator class="native"></generator> </id> <property name="name"/> </class> </hibernate-mapping>
5. 一对一双向主键关联
5.1、同上一Husband Wife为例
5.2、给出配置代码
@Entity public class Husband { private int id; private String name; private Wife wife; @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @OneToOne(cascade=CascadeType.ALL) @PrimaryKeyJoinColumn public Wife getWife() { return wife; } public void setWife(Wife wife) { this.wife = wife; } }
@Entity public class Wife { private int id; private String name; private Husband husband; @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @OneToOne @PrimaryKeyJoinColumn public Husband getHusband() { return husband; } public void setHusband(Husband husband) { this.husband = husband; } }
5.3表结构
5.4、老版本XML
<hibernate-mapping> <class name="com.kylin.test.Husband" dynamic-update="true"> <id name="id"> <generator class="foreign"> <param name="property">wife</param> </generator> </id> <property name="name"/> <one-to-one name="wife" constrained="true"></one-to-one> </class> </hibernate-mapping>
<hibernate-mapping> <class name="com.kylin.test.Wife" dynamic-update="true"> <id name="id"> <generator class="native"></generator> </id> <property name="name"/> <one-to-one name="husband" property-ref="wife"></one-to-one> </class> </hibernate-mapping>
6. 联合主键
6.1 同上,但这里只给出Annotation配置例子:
6.2.配置代码
@Entity public class Husband { private int id; private String name; private Wife wife; @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @OneToOne @JoinColumns( { @JoinColumn(name="wifeId", referencedColumnName="id"), @JoinColumn(name="wifeName", referencedColumnName="name") } ) public Wife getWife() { return wife; } public void setWife(Wife wife) { this.wife = wife; } }
@Entity @IdClass(WifePK.class) public class Wife { private int id; private String name; private int age; @Id public int getId() { return id; } public void setId(int id) { this.id = id; } @Id public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
public class WifePK { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
6.3,表结构如下
PS……待续
发表评论
-
Oracle - Add Exist Validation Before Create Table
2011-11-07 13:49 1455Usually we need to check the ta ... -
JMX Architecture & "Hello Word" the JMX way
2011-10-25 20:07 1813JMX Architecture Overview: JMX ... -
Jboss-eap-5.1 Messaging
2011-08-02 21:50 2473This section I will concertate ... -
Jboss-eap-5.1 starting up note
2011-07-26 22:46 2584Jboss enterprise platform 5 hav ... -
EJB Security & JAAS Demo
2011-05-21 19:39 1615PROLOGUE: When deploying ... -
JBoss LoginInitialContext Factory Implementation
2011-05-15 16:05 1533Jboss has a series of imp ... -
Jboss Reference Exception Gallery
2011-04-27 14:08 28911. Unable to locate a login con ... -
Hibernate Annotation 的一个问题,给点意见
2011-03-10 12:43 22问题:org.hibernate.annotations. ... -
大家说说BBC的网站用的是什么技术做的
2011-02-22 05:01 1438最近在英国出差,发现这里的一些网站做的相当有特色,有些网站不是 ... -
Hibernate OneToMany 单向和双向配置对数据存取性能的比较
2011-02-08 17:06 23171. 开篇说明:今天是春 ... -
对Hibernate属性(CascadeType、JoinColumn、JoinTable、ForeignKey等)的研究
2010-12-26 15:45 16672本文列出几个“EJB 学习阶段总结:JBoss下发布一个Toy ... -
EJB 学习阶段总结:JBoss下发布一个Toy企业应用
2010-12-25 12:11 2632解释题目:为什 ... -
EJB7: Message Driven Bean
2010-12-21 22:42 2148在企业系统中需要使用 ... -
EJB6: EntityBean例子
2010-11-26 14:48 1493本例子描述向EJB容器(JBoss)部署http: ... -
JPA dev: 几个问题总结(续)
2010-11-25 18:02 24732. 如何由PoJo类生成数据库中的表 首先可以根据实体间关 ... -
JPA dev: 几个问题总结
2010-11-25 16:56 3404最近工作中遇到几个与JPA相关的问题,本文通过一个例子总结一下 ... -
JAXB学习
2010-11-24 22:35 01 什么是JAXB? JAXB全称Java Ar ... -
EJB5: JPA扩展-J2SE环境下使用EntityManager
2010-11-10 19:07 2708好久没有写博客了,最近比较忙,今天抽时间写点,最近 ... -
EJB4:RMI和RMI-IIOP
2010-11-02 21:14 4135计划提纲:引入→RMI概念→RMI HelloWorld程序→ ... -
EJB3: JBOSS 企业版、JBOSS服务器构架、EJB2.0 HelloWrold实例
2010-10-26 22:43 6473本文的研究基于jboss-eap- ...
相关推荐
【标题】"s2sh框架实例——个人备忘录系统源码" 提供了一个学习和研究Web开发的宝贵资源,特别适合对Java Web技术感兴趣的初学者。S2SH是Struts2、Spring和Hibernate三个开源框架的组合,是Java领域广泛应用的MVC...
以下是基于标题“struts+spring+hibernate3+webligic812环境配置备忘录”的详细知识点解析: ### 一、环境搭建与配置 #### 1. WebLogic Server安装与配置 - **安装过程**:首先,下载WebLogic Server 8.1.2版本的...
Java SSM备忘录管理系统毕业论文 本文主要介绍了基于 Java SSM 框架和 MySQL 数据库的备忘录管理系统的设计与实现。该系统旨在解决传统备忘录管理中的问题,实现信息化和网络化,提高备忘录管理的效率和经济性。 ...
【标题】中的“大学毕业设计 项目实训 个人备忘录系统(java SSH网站源代码)”表明这是一个基于Java的SSH框架实现的个人备忘录系统,适用于大学生进行毕业设计或项目实训。SSH是Struts2、Spring和Hibernate三个开源...
该压缩包文件“java记事簿管理系统_备忘录管理系统_通讯录_记账本-源码+数据库+论文or文档.zip”包含了基于Java开发的一个综合性的管理系统的源代码、数据库文件以及相关的论文或文档。这个系统集成了多个实用功能...
这篇备忘录主要关注Hibernate的核心概念、功能及其实现方式。通过博文链接(已省略)可获取更深入的探讨。 【标签】:“源码”、“工具” 【压缩包子文件的文件名称列表】:TestHQL **知识点详解:** 1. **...
【标题】:“备忘录”涉及的技术点涵盖了图形用户界面(GUI)的元素设计、程序关闭的优雅实现、数据库管理和系统事件监听等多个方面。 【图形按钮】是用户界面设计中的重要组成部分,它允许用户通过点击来执行特定...
本备忘录将深入探讨Struts的核心概念、架构以及如何在实际项目中使用它。 **1. MVC模式** Struts是基于Model-View-Controller(MVC)设计模式的,这种模式有助于分离业务逻辑、数据模型和用户界面。Model代表业务...
本篇文章将深入探讨“java版本控制(数据库版本控制)”,并结合备忘录设计模式来阐述其原理和实践。 首先,我们来理解什么是备忘录设计模式。备忘录模式是一种行为设计模式,它允许对象在不破坏封装性的前提下捕获...
在Java Web开发中,SSHF(Struts2、Spring、Hibernate和FreeMarker)是一个常见的技术栈,用于构建高效、可维护的MVC应用程序。这些框架的整合能够提供强大的功能,如模型-视图-控制器架构、依赖注入、持久化管理和...
Code-memo 平时学习的开源框架的示例代码。包括mybatis、spring、spring-boot、hbase、...springboot、jpa、hibernate访问mysql,并提供restful接口 opensource-utils google guaua 使用示例,hbase访问接口以及hbase操
3.管理员用户:登录功能、退出功能、课程管理、作业管理、资料下载管理、选课管理、留言管理、备忘录管理、心得管理、班级管理、学院管理、系管理、教师管理、学生管理,拥有系统 最高权限。 三、注意事项 1、管理...
在"java web开发典型模块大全"中,我们看到提到了几个关键的模块或功能,包括Rss、备忘录、搜索引擎、聊天室和留言板。接下来,我们将详细探讨这些模块的实现和它们在Java Web开发中的重要性。 1. **Rss模块**:RSS...
这是一个备忘录, 主要用angjularjs框架写的前台,bootstrap做的页面样式,页面跳转用了angular-ui-router这个模块插件。 后台主要用了springmvc和hibernate。这是我练笔的一个项目,由于时间关系有些功能没做,当中...
该系统集成了多种功能,如用户登录和注册、学生通讯录管理、学校会议安排、学习笔记记录、通知发布以及备忘录创建与修改。同时,它具备消息发送和接收的能力,为学生和教师提供了一个方便的在线交流平台。 在技术...
该图书馆主要分为:我的图书、我的收藏、备忘录、信息、日志、资料搜索、图书管理等几大模块。“我的图书”是指用户上传的所有文件;“我的收藏”是指用户保存的一些网摘;“备忘录”顾名思义是指用户向系统中添加...
在Java编程环境中,这些功能通常通过使用ORM(对象关系映射)框架,如Hibernate或JPA,来实现对数据库的操作。通过这些工具,开发者可以以面向对象的方式与数据库交互,提高代码的可读性和可维护性。 为了实现安全...
3. 备忘录:用户可以添加和管理自己的计划和任务。 4. 信息:用户可以与其他用户进行信息交流和讨论。 5. 日志:用户可以发布和管理自己的日志。 6. 资料搜索:用户可以搜索和管理自己的数字资源。 系统的后台管理...
同时,管理员和备忘录功能也具备类似的数据管理能力,支持分类查询,这进一步提升了数据处理的灵活性和实用性。 关键词:汽车销售管理系统、JSP、MVC、SSH 总的来说,这个汽车销售管理系统通过运用先进的软件技术...
9. **个人备忘录管理**:备忘录的创建、更新、删除和查询功能可以通过CRUD操作实现,可能使用到集合框架如ArrayList或LinkedList,以及日期时间处理类如Java 8的LocalDateTime。 10. **娱乐天地**:这部分可能包含...