hibernate的注解
很多同学在进行编程学习时缺乏系统学习的资料。本页面基于hibernate的注解内容,从基础理论到综合实战,通过实用的知识类文章,标准的编程教程,丰富的视频课程,为您在hibernate的注解相关知识领域提供全面立体的资料补充。同时还包含 h6、hack、hadoop 的知识内容,欢迎查阅!
hibernate的注解相关知识
-
Hibernate常用标签整理(1)Hibernate的注解分为 类级别注解、属性级别注解、关系映射级别注解。 Hibernate类级别注解主要介绍@Entity、@Table、@Embeddable三个。类级别注解只能标记在实体定义的地方,即public class 类名 上方。 @Entity 注解表明这个class是一个实体类,用于映射实体类,一般情况下类名与表名一致,如果不相同使用name属性对应数据库中映射的表名。Entity必须指定实体类的主键属性,使用@Id标记是主键的变量。 @Table 表示实体对应的数据库表的信息,和@Entity配合使用@Table标签有三个属性,
-
hibernate基本注解(全)对hibernate的注解都是一知半解的,这次系统记录注解,便于查找 类级别注解 @Entity映射实体类 @Entity(name="tableName") name:可选,对应数据库中的一个表。若表名与实体类名相同,则可以省略 注意:使用@Entity时必须指定实体类的主键属性 @Table @Table(name="",catalog="",schema="") @Entity配合使用,只能标注在实体的class定义处,表示实体对应的数据库表的信息。 name:可选,映射表的名称,默认表名和实体名称一致,只有在不一致的情况下才需要指定表名。 catalog 可选,
-
关于hibernate需要注意的东西在hibernate框架种,需要注意的是在myeclipse中有支持数据库连接的,只需要自己在工具中配置,而且在myeclpise也支持,hibernate核心配置文件的生成,包括工具类的生成等。当不懂,或忘记之时,请看hibernate之一对多的最后一章。 hibernate框架开发的几大重要步骤: 1、创建hibernate的配置文件 2、创建持久化类 3、创建对象--关系映射文件 4、通过hibernate api编写访问数据库代码 而对于我本人而言,或许对很多新手而言,我相信,框架配置方面,很快或者多用就会很熟悉,对于我们最重
-
Hibernate注解时常见错误异常: org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping class="com.xxxchina.instance.xxxContext"/> 错误原因: Configuration cfg = new Configuration(); SessionFactory sf = cfg.configure().buildSessionFactory(); 解决方法: Hibernate配置文件中,若带有<mapping class="com.xxx.Dog"/>,则说明映射类时,采用了Annotation方式。在初始化Configuation时,应使用AnnoationConfiguration,代码如下: Config
hibernate的注解相关课程
hibernate的注解相关教程
- 3. Hibernate 中使用注解 Hibernate 中,通过元数据的方式描述映射关系,其表达语法有 2 种:其一: XML 语法;其二: 本节课程要给大家隆重推荐的是注解语法。注解语法本质就是 Java 语法。
- 3.3 注解的位置 注解说:我可不是随便的代码!每一个注解都有自己位置。如同 @Entity、@Table 是类级别注解,对类做整体说明;如同 @Id、@Column、@Transient 这几个注解是属性、方法级别的,可对属性或方法做说明,如下: @Id private Integer stuId; @Column private String stuName;或 @Id public Integer getStuId() { return stuId; } @Column public String getStuName() { return stuName; }如上 2 种方式都可告诉 Hibernate 如何映射表中的对应字段。既然有 2 种方案,必然会有优劣之分(有比较就会有差别的哲学)。提问时间:建议使用哪一种方式?-------------------启动自问自答模式----------------------建议把注解放在属性对应的 get 方法上。为什么?----------------------让你思考0.5秒钟------------------时间到!公布答案。不管是放在属性上面还是放在 get 方法上面,Hibernate 都要使用反射机制,如果直接反射属性,则是对 OOP 封装特性的挑战。虽然使用反射可以在底层为所欲为,但作为有良知的开发者来讲,则要从规范上杜绝破坏 OOP 规则的事情。当然这只是建议!最后的选择由你决定。
- 3.2 使用注解重构代码 现在使用注解方式重构前面代码,使用之前先秀出 Hiernate 中常用的几个注解:@Table:描述实体类对应的表名;@Idclass:指定充当主键的类;@Entity: 标注类是实体类;@Id: 描述哪个属性对应表中的主键字段;@Column:指定与属性对应的字段名;@Basic:等价于没有定义注解的属性;@Transient :属性不被持久化。不要指望一下记住它们,还是通过使用的过程逐步理解为上策。友情提示:心急吃不了热豆腐!!修改学生类@Entity public class Student { private Integer stuId; private String stuName; private String stuSex; public Student(Integer stuId, String stuName, String stuSex) { super(); this.stuId = stuId; this.stuName = stuName; this.stuSex = stuSex; } public Student(String stuName, String stuSex) { super(); this.stuName = stuName; this.stuSex = stuSex; } public Student() { super(); } @Id public Integer getStuId() { return stuId; } public void setStuId(Integer stuId) { this.stuId = stuId; } public String getStuName() { return stuName; } public void setStuName(String stuName) { this.stuName = stuName; } public String getStuSex() { return stuSex; } public void setStuSex(String stuSex) { this.stuSex = stuSex; } } 这样可以吗?是的,可以啦。用放大镜扫描一下上面的学生类,好不容易看到 2 个注解:@Entity:标注这个类是持久化类;@Id:标注这个属性是标识属性,必须给出。不要怀疑,对于 Hibernate 来说已经足够,需要知道的常识是:对于其它没有标注任何注解的属性,Hibernate 默认为数据库的表中有与属性同名的字段。替换主配置文件<mapping resource="com/mk/po/Student.hbm.xml" />替换成:<mapping class="com.mk.po.Student" />运行测试实例// 配置对象Configuration configuration = new Configuration().configure();// 服务注册ServiceRegistry serviceRegistry =new ServiceRegistryBuilder().applySettings(configuration.getProperties()) .buildServiceRegistry();// 会话工厂SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry); // 会话对象Session session = sessionFactory.openSession();// 事务对象Transaction transaction = null;try { // 打开事务 transaction = session.beginTransaction(); // 添加一条学生信息 Student student = new Student(2, "Configuration02", "男"); session.save(student); transaction.commit();} catch (Exception e) { transaction.rollback();} finally { session.close();} } 测试代码还是原来的测试代码!只是新增了一条数据!进入 MySQL 瞧一瞧,数据如假包换的插入成功。是不是感觉如春风般温暖!对 Hibernater 的感受又增加了很多。简直让人无法相信,2 个注解就映射成功。但是,这是有前提条件的:应用程序中的类名和关系数据库中的表名同名时,使用一个@Entity 注解足够;类名和表名不一样时,则需使用 @Table(表名)注解告诉 Hibernate;应用程序中类中的属性名和数据库表中的字段名同名时,Hibernate自会心领意会。实质是没有提供注解的属性默认使用了@Basic 注解。如果属性名与字段名不同名时,请使用 @Column ( name=“stuName”) 注解明确告诉 Hibernate。如果类中某一个属性本就没有对应字段名,仅仅是方便程序中某些需求,这时需要在此属性上加上 @Transient,让 Hibernate 对此属性视之不理。
- 3. Hibernate 的发展历史 喝水不忘挖井人,先了解下 Hibernate 的发展历程。故事的大致情节就是澳大利亚墨尔本一位名为 Gavin King 的 27 岁的程序员嫌弃原有的 Jdbc 编码工作方式太过无聊、无脑。于是就买了一本 SQL 编程的书籍在不长的时间内写了这么一个叫 Hibernate 的框架。Hibernate 一出江湖,便一鸣惊人如此而已;Hibernate 承载了一个程序员的励志故事。Hibernate 由最初的 1.0 版本演变到了现在 6.x 版本(官网最新显示),功能越来越强大,体积当然也越来越强大。至于你爱不爱它,还是要看项目的需要。故事讲完,继续!
- 3. Hibernate 的主配置文件 聊回到 Hibernate,Hibernate 是一个框架,框架只是一个半成品应用程序。需要使用 Hibernate 完成一次具体的数据库数据操作时,需要开发者的组件和 Hibernate 的组件通力合作。对于 Hibernate 来说,如何知道开发者具体使用什么样的数据库、什么样的持久化对象……开发者只需要把这些信息写入到配置文件中,Hibernate 就能通过读取配置信息了解开发者的心意。所以说主配置文件在 Hibernate 和 开发者之间充当了桥梁的作用,是内外交流的通道。Tips: 通过配置文件,在开发者和 Hibernate 之间进行信息传递,让 Hibernate 能从容面对不同开发者的需求。你有没有觉得 Hibernate 把开闭原则用得很好呢!知道了配置文件的作用,现在是时候了解 Hibernate 中的主配置文件能具体传递什么信息了。
- 2. 注解的详解 在我们详细讲解注解之前,首先明确一点:注解配置和 xml 配置实现的功能都是一样的,只不过实现的方式不同,那么也就是说,xml 文件可以实现的,通过注解都可以完全办得到。比如实例化对象,设置属性,设置作用范围,生命周期的方法执行等等…
hibernate的注解相关搜索
-
h1
h6
hack
hadoop
halt
hana
handler
hanging
hash
hashtable
haskell
hatch
hbase
hbuilder
hdfs
head
header
header php
headers
headerstyle