【Hibernate】Hibernate的映射关系「建议收藏」

【Hibernate】Hibernate的映射关系「建议收藏」【Hibernate】Hibernate的映射关系

大家好,又见面了,我是你们的朋友全栈君。

    还记得我们在EF映射中学过的ORM 吗?ORM(Object Relational Mapping )就是对象关系映射,它是指面向对象的对象模型和关系型数据库的结构之间的相互转换。当我们操作实体对象的时候,就不需要操作复杂的SQL语句,而是对实体对象的属性和方法进行操作。Hibernate就体现了ORM的思想,将关系数据库中的表映射成对象,开发人员对数据库的操作就可以转化为对对象的操作。

Hibernate映射的基本结构

    Hibernate在实现ORM功能的时候主要用到的文件有:映射类(*.java)、映射文件(*.hbm.xml)和数据库配置文件(*.properties/*.cfg.xml),它们各自的作用如下。

    映射类(*.java):它是描述数据库表的结构,表中的字段在类中被描述成属性,将来就可以实现把表中的记录映射成为该类的对象了。

    映射文件(*.hbm.xml):它是指定数据库表和映射类之间的关系,包括映射类和数据库表的对应关系、表字段和类属性类型的对应关系以及表字段和类属性名称的对应关系等。

    数据库配置文件(*.properties/*.cfg.xml):它是指定与数据库连接时需要的连接信息,比如连接哪种数据库、登录数据库的用户名、登录密码以及连接字符串等。当然还可以把映射类的地址映射信息放在这里。

举个例子:

数据库中有User表,表中有userId和userName两个字段,则对应的User.java文件为:

public class User {

	private String userId;
	
	private String userName;

	public String getUserId() {
		return userId;
	}

	public void setUserId(String userId) {
		this.userId = userId;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}
	
}

在User.hbm.xml文件中配置User对象和User表的映射:

<hibernate-mapping>
	<class name="com.tgb.hibernate.User">
		<!-- 主键 -->
		<id name="userId">
			<generator class="uuid"/>			
		</id>
		<property name="userName" column="user_name"/> 
	</class>	
</hibernate-mapping>

hibernate.cfg.xml文件中链接数据库的信息

<hibernate-configuration>
	<session-factory >
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hinrtnste.connection.password">123456</property>
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		
		<mapping resource="com/tgb/hibernate/User.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

Hibernate实现的关系映射

【Hibernate】Hibernate的映射关系「建议收藏」

    上面的代码就是基本映射的体现,接下来会继续介绍常用的关系映射,敬请期待微笑



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/105698.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月25日 上午7:40
下一篇 2022年4月25日 上午8:00


相关推荐

  • RCNN和SPPnet

    RCNN和SPPnetRCNN的提出首次利用了CNN来提取图片特征,大大提高了检测精度。整体思路:输入一张图片,selectivesearch方法提取2000个proposalregion,由于CNN输入图片的大小是固定的,所以需要把proposalregion变成同样的大小(比如227×227),然后通过五层卷积层和两个全连接层,然后用SVM进行分类因为我们后面还要继续用这2000个候选框图片,继续…

    2022年6月10日
    40
  • RegisterStartupScript和RegisterClientScriptBlock

    RegisterStartupScript和RegisterClientScriptBlockPage.Response.Write(“varresponse;”);    Page.RegisterStartupScript(“RegisterStartupScript”,”varRegisterStartupScript;”);    Page.RegisterClientScriptBlock(“RegisterClientScriptBlock”,”varRe

    2022年7月20日
    16
  • maven编译报错:java.lang.ExceptionInInitializerError: com.sun.tools.javac.code.TypeTags[通俗易懂]

    maven编译报错:java.lang.ExceptionInInitializerError: com.sun.tools.javac.code.TypeTags[通俗易懂]错误日志:[ERROR]Failedtoexecutegoalorg.apache.maven.plugins:maven-compiler-plugin:3.1:compile(default-compile)onprojecthelloworld:Fatalerrorcompiling:java.lang.ExceptionInInitializerError:c…

    2022年5月28日
    40
  • 算法模型定义介绍

    算法模型定义介绍1.马尔科夫模型1.1马尔科夫过程  马尔可夫过程(Markovprocess)是一类随机过程。它的原始模型马尔可夫链。已知目前状态(现在)的条件下,它未来的演变(将来)不依赖于它以往的演变(过去)。  一个马尔科夫过程就是指过程中的每个状态的转移只依赖于之前的n个状态,这个过程被称为1个n阶的模型,其中n是影响转移状态的数目。最简单的马尔科夫过程就是一阶过程…

    2022年6月23日
    34
  • 邮箱正则表达式php,邮箱正则表达式验证

    邮箱正则表达式php,邮箱正则表达式验证PHP 邮箱验证正则表达式 preg match 0 9a zA Z 0 9a zA Z a z 2 4 i email 如果需要更加完善 严格的验证 修改这个正则表达式即可 PHP 邮箱验证正则表达式新手实例 functionisEm email if preg match 0 9a zA Z 0 9a zA Z

    2026年3月18日
    2
  • vb教程编程实例详解pdf_vb程序设计教程答案第四版

    vb教程编程实例详解pdf_vb程序设计教程答案第四版实验8-7在教学篇例8.7的基础上增加“修改确定”按钮以及用于定位记录的按钮面板,如图2.8.5所示,并编写时间过程。解题,代码如下:先建立标准模块,代码是:TypestudtypeiNoAsIntegerstrNameAsString*20strSexAsString*1sMarkAsSingleEndType…

    2022年10月7日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号