hibernate实体类
很多同学在进行编程学习时缺乏系统学习的资料。本页面基于hibernate实体类内容,从基础理论到综合实战,通过实用的知识类文章,标准的编程教程,丰富的视频课程,为您在hibernate实体类相关知识领域提供全面立体的资料补充。同时还包含 h6、hack、hadoop 的知识内容,欢迎查阅!
hibernate实体类相关知识
-
Hibernate第二天 实现增删改查 一级缓冲等等Hibernate_day02 1 实体类编写规则 2 hibernate主键生成策略 3 实体类操作 (1)crud操作 (2)实体类对象状态 4 hibernate的一级缓存 5 hibernate的事务操作 (1)事务代码规则写法 6 hibernate其他的api(查询) 实体类编写规则 1 实体类有无参数构造 2 实体类属性私有的 3 私有的属性通过公开的set和get方法操作 4 hibernate要求实体类有一个属性作为唯一值 (1)一般使用id作为唯一值 5 hibernate建议 (1)如果定义属性,属性类型建议不使用基本数据类型,使用
-
我的hibernate学习记录导入相关jar包 创建实体类,实体类要有一个唯一标识 在实体类所在的包创建后缀名为hbm.xml的hibernate映射文件,导入头部约束: <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <!-- name属性:实体类的完整类名 table属性:实体类对应的表名 --> <class name="com.melon.entity.User" table="user_list"> <!-- id标签表示唯一标识 name属性:实体类中
-
001 Hibernate 初始Hibernate 是什么Hibernate 是一个优秀的Java持久层矿建Hibernate 是对 JDBC 做轻量级封装的ORM框架Eclipse 下Hibenate 插件安装 参考:http://www.cnblogs.com/AlanLee/p/5836823.htmlHibernate 初始导入相关jar包导入Hibernate jar包导入hibernate 下 lib目录下required下所有的jar导入数据驱动jar编写代码创建Hibernate配置文件(hibernate.cfg.xml)编写实体类 编写实体映射文件 编写测试代码<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Conf
-
Hibernate 映射枚举(Enum) 类型的属性在数据库中我们一般用整数或字符串来表示枚举值(有些数据库(如 MySQL)本身带有枚举类型), 而在使用 Hibernate 时实体对象中也用 Integer 或 String 来表示枚举就不那么友好了。试想来我们这样定义实体对象的两个属性@Entitypublic class User { .... public Integer type; //0: Individual 类型,1: Company 类型 public String gender; //可取值 Male 和 Female}这样的定义很不严谨,type 和 gender 理论上可取任何值,这会造成表中数据的混乱。其实 Hibernate 在 Java 实体对象中是可以直接用枚举类型与数据库中的整数或字符串映射,需用到 @Enumerated 注解
hibernate实体类相关课程
hibernate实体类相关教程
- 3. 没有中间表实体类的映射 如果中间表仅仅只是充当桥梁作用,没有程序需要的实质性数据时,程序中可以没有中间表对应的实体类。学生和课程的关系,直接在学生类和课程类中体现彼此关系就可以:新建课程实体类:@Entitypublic class Course { private Integer courseId; private String courseName; private String courseDesc; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) public Integer getCourseId() { return courseId; } //省略其它代码}因为一名学生对应多门课程,在学生实体类中添加集合属性:private Set<Course> courses;完成程序级别上的关系描述后,还需告诉 Hibernate,实体类中的集合属性数据来自哪一张以及如何获取?为了把问题简单化,在学生实体类中只体现和课程的关系 ,前面映射内容注释或删除。学生实体类的完整描述:private Set<Course> courses;@ManyToMany(targetEntity = Course.class)@JoinTable(name = "score", joinColumns = @JoinColumn(name = "stuId", referencedColumnName = "stuId"), inverseJoinColumns = @JoinColumn(name = "courseId", referencedColumnName = "courseId"))public Set<Course> getCourses() { return courses;}@ManyToMany 告诉 Hibernate, course 集合中的数据来自课程表 ;@JoinTable 告诉 Hibernate 获取课程表中数据时需要借助 score 中间表。分别描述中间表和学生表、课程表的连接字段。在 Hibernate 主配置文件中修改或添加如下信息:<property name="hbm2ddl.auto">create</property><mapping class="com.mk.po.Student" /><mapping class="com.mk.po.Course" />执行下面的测试实例:@Testpublic void testGetStuAndCourse() { HibernateTemplate<Student> hibernateTemplate = new HibernateTemplate<Student>();}查看 MySql 中的表:切记把下面的信息修改回来:<property name="hbm2ddl.auto">update</property>手工添加测试数据:好!通过测试实例见证 Hibernate 的神奇。HibernateTemplate<Student> hibernateTemplate = new HibernateTemplate<Student>();hibernateTemplate.template(new Notify<Student>() { @Override public Student action(Session session) { Student stu=(Student)session.get(Student.class, new Integer(1)); System.out.println("---------------------------"); System.out.println("学生姓名:"+stu.getStuName()); System.out.println("----------------------------"); System.out.println("学生选修课程数:"+stu.getCourses().size()); return stu;}});查看控制台上面的输出结果:Hibernate: select student0_.stuId as stuId1_1_0_, student0_.stuName as stuName2_1_0_, student0_.stuPassword as stuPassw3_1_0_, student0_.stuPic as stuPic4_1_0_, student0_.stuSex as stuSex5_1_0_ from Student student0_ where student0_.stuId=?---------------------------学生姓名:Hibernate----------------------------Hibernate: select courses0_.stuId as stuId1_1_1_, courses0_.courseId as courseId2_2_1_, course1_.courseId as courseId1_0_0_, course1_.courseDesc as courseDe2_0_0_, course1_.courseName as courseNa3_0_0_ from score courses0_ inner join Course course1_ on courses0_.courseId=course1_.courseId where courses0_.stuId=?学生选修课程数:2Hibernate 构建了两条 SQL 语句,先是查询到学生信息,需要课程信息时,再通过中间表连接到课程表,查询出课程相关信息。可得出结论:默认情况下,Hibernate 使用了延迟加载。如此做,Hibernate 是考虑了性能的。
- 3. 实体类 实体类的作用是存储数据并提供对这些数据的访问。在我们这个项目中,实体类统一被放到了model包下,通常情况下,实体类中的属性与我们的数据表字段一一对应。当我们编写这些实体类的时候,建议对照着数据表的字段以防疏漏。
- 3. Hibernate 的主配置文件 聊回到 Hibernate,Hibernate 是一个框架,框架只是一个半成品应用程序。需要使用 Hibernate 完成一次具体的数据库数据操作时,需要开发者的组件和 Hibernate 的组件通力合作。对于 Hibernate 来说,如何知道开发者具体使用什么样的数据库、什么样的持久化对象……开发者只需要把这些信息写入到配置文件中,Hibernate 就能通过读取配置信息了解开发者的心意。所以说主配置文件在 Hibernate 和 开发者之间充当了桥梁的作用,是内外交流的通道。Tips: 通过配置文件,在开发者和 Hibernate 之间进行信息传递,让 Hibernate 能从容面对不同开发者的需求。你有没有觉得 Hibernate 把开闭原则用得很好呢!知道了配置文件的作用,现在是时候了解 Hibernate 中的主配置文件能具体传递什么信息了。
- 3. Hibernate 的发展历史 喝水不忘挖井人,先了解下 Hibernate 的发展历程。故事的大致情节就是澳大利亚墨尔本一位名为 Gavin King 的 27 岁的程序员嫌弃原有的 Jdbc 编码工作方式太过无聊、无脑。于是就买了一本 SQL 编程的书籍在不长的时间内写了这么一个叫 Hibernate 的框架。Hibernate 一出江湖,便一鸣惊人如此而已;Hibernate 承载了一个程序员的励志故事。Hibernate 由最初的 1.0 版本演变到了现在 6.x 版本(官网最新显示),功能越来越强大,体积当然也越来越强大。至于你爱不爱它,还是要看项目的需要。故事讲完,继续!
- 2. Hibernate 是什么 简而言之:Hibernate 是一个 Java Jdbc 框架,用来简化 Java Jdbc 操作;Hibernate 也是一个ORM 框架,可以自动完成关系数据库中关系型数据到 Java 对象型数据的映射;当然,还可以说是一个持久化框架。以上说法其实是对完成同一件事情不同角度的诠释。Hibernate 的出现就是想让开发者的编码工作变得简单,这个简单指不需要在非核心逻辑编写上花费太多时间。
- 2. Hibernate 核心组件 独木难成林,一个好汉三个帮!开发者的应用程序依赖 Hibernate 完成数据库中数据操作任务时,Hibernate 又会依靠它体系内的多个组件一起协同完成任务。如下图展示了 Hibernate 的核心组件库中部分组件之间的依赖关系。开发者需要使用 Hibernate 暴露给开发者的组件 API 进行对接开发,先看看分别都有谁:Configuration;ServiceRegistry;SessionFactory;Session;Transaction。这几大组件各有来头,想要完全驾驭,则需了解其秉性和功能,后面章节会一一展开讨论。此处只需要了解这几大组件在构建一个完整的操作流程时各自的核心作用及出现顺序。如下图示:简述一下流程:通过 Configuration 对象读取主配置文件,故需为此对象指定主配置文件的位置,如不指定,由从默认位置即编译后的主目录(classes 或 bin)中读取;配置对象在拥有了数据库连接配置信息后便可以创建 SessionFactory 对象。此组件可认为是应用程序中对某一个具体关系型数据库系统的抽象引用。透明地认为它就是数据库的镜像;由 SessionFactory 对象创建出可以直接操作数据库的会话对象(Session)。Session 对象相当于原生 Jdbc 中的 Connection 对象,但比其具有更丰富的实际操作功能,Session 对象也叫做持久化容器。应用程序主要使用此对象进行一系列具体的数据操作,有它便可“扫货”数据库中的数据;Transaction 在具体操作中起事务监控作用,负责及时提交,及时刹车回滚。认识了 Hibernate 中的这群肝胆相照的好兄弟,了解了他们的各自职责,它们通过分工合作的方式把应用程序的意图向 Hibernate 内部组件逐层传达。现在是着手编写一个完整代码的时候了,有了结果的过程更能感受到 Hibernate 的魅力。Hibernate 4.x 之后的版本中多了一个 ServiceRegistry组件,此组件到后面章节论述。
hibernate实体类相关搜索
-
h1
h6
hack
hadoop
halt
hana
handler
hanging
hash
hashtable
haskell
hatch
hbase
hbuilder
hdfs
head
header
header php
headers
headerstyle