hibernate annotation和xml两个方式由orm连接数据库
来源:互联网 发布:linux系统查看系统时间 编辑:程序博客网 时间:2024/05/16 09:47
Hibernate 注解和配置文件由ORM框架连接库
xml优点
不需要改变和重新编译代码,就可以灵活配置
xml缺点:
◆ 描述符多,不容易记忆,掌握。要深入了解还得看DTD文件
◆ 无法做自动校验,需要人工查找
◆ 读取和解析xml配置要消耗一定时间,导致应用启动慢,不便于测试和维护
◆ 当系统很大时,大量的xml文件难以管理
◆ 运行中保存xml配置需要消耗额外的内存
◆ 在O/R Mapping的时候需要在java文件和xml配置文件之间交替,增大了工作量
◆ 标签语义不清,需要大量试验才能掌握。
◆ 细节太多。有时没规律可循,需要大量试验才能掌握。
annotation优点
◆ 描述符减少。以前在xml配置中往往需要描述java属性的类型,关系等等。而元数
据本身就是java语言,从而省略了大量的描述符
◆ 编译期校验。错误的批注在编译期间就会报错。
◆ 元数据批注在java代码中,避免了额外的文件维护工作
◆ 元数据被编译成java bytecode,消耗的内存少,读取也很快,利于测试和维护
Annotation缺点
没法灵活部署
语义有的不是很清楚
Annotation放在field上,还是放在还是放在method上?
推荐放在method上,这样更灵活
也有可能没有成员变量,但是有getter/setter,
比如一个订单求总价
Getter/setter和成员变量的名字最好一致;
Annotation要么全加在field上,要么全加在method上
1.通过配置 bean.hbm.xml
a.hibernate.cfg.xml文件里面
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
- <hibernate-configuration>
- <session-factory>
- <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
- <property name="connection.url">jdbc:mysql://localhost:3306/beichuang</property>
- <property name="connection.username">root</property>
- <property name="connection.password">123456</property>
- <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
- <property name="connection.autocommit">true</property>
- <property name="show_sql">true</property>
- <mapping resource="com/chuanxi/training/bean/Team.hbm.xml"></mapping>
- <mapping resource="com/chuanxi/training/bean/Student.hbm.xml"></mapping>
- <mapping resource="com/chuanxi/training/bean/Admin.hbm.xml"></mapping>
- <mapping resource="com/chuanxi/training/bean/Log.hbm.xml"></mapping>
- </session-factory>
- </hibernate-configuration>
b.team.hbm.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping package="com.chuanxi.training.bean">
- <class name="Team" table="team">
- <id name="id" column="team_id">
- <generator class="identity"/>
- </id>
- <property name="name" column="name"></property>
- <property name="leader" column="leader"></property>
- <property name="slogan" column="slogan"></property>
- <set name="members" inverse="true" lazy="false">
- <key>
- <column name="team_id"/>
- </key>
- <one-to-many class="com.chuanxi.training.bean.Student"/>
- </set>
- </class>
- </hibernate-mapping>
2.Hibernate的注解
a.hibernate.cfg.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
- <hibernate-configuration>
- <session-factory>
- <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
- <property name="connection.url">jdbc:mysql://localhost:3306/beichuang</property>
- <property name="connection.username">root</property>
- <property name="connection.password">123456</property>
- <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
- <property name="connection.autocommit">true</property>
- <property name="show_sql">true</property>
- <mapping class="com.org.momo.bean.Team"></mapping>
- <mapping class="com.org.momo.bean.Student"></mapping>
- <mapping class="com.org.momo.bean.Log"></mapping>
- <mapping class="com.org.momo.bean.Admin"></mapping>
- </session-factory>
- </hibernate-configuration>
b.team.java
- package com.org.momo.bean;
- import java.util.Set;
- import javax.persistence.Column;
- import javax.persistence.Entity;
- import javax.persistence.FetchType;
- import javax.persistence.GeneratedValue;
- import javax.persistence.GenerationType;
- import javax.persistence.Id;
- import javax.persistence.OneToMany;
- import javax.persistence.Table;
- @Entity
- @Table(name="team")
- public class Team {
- @Id
- @Column(name="team_id")
- @GeneratedValue(strategy=GenerationType.AUTO)
- private Integer id;
- @Column(name="name")
- private String name;
- @Column(name="leader")
- private String leader;
- @Column(name="slogan")
- private String slogan;
- @OneToMany(mappedBy="team",fetch=FetchType.EAGER)
- private Set<Student> members;
- public Team() {
- }
- public Team(String name, String leader, String slogan) {
- this.name = name;
- this.leader = leader;
- this.slogan = slogan;
- }
- public Integer getId() {
- return id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getLeader() {
- return leader;
- }
- public void setLeader(String leader) {
- this.leader = leader;
- }
- public String getSlogan() {
- return slogan;
- }
- public void setSlogan(String slogan) {
- this.slogan = slogan;
- }
- public Set<Student> getMembers() {
- return members;
- }
- public void setMembers(Set<Student> members) {
- this.members = members;
- }
- }
0 0
- hibernate annotation和xml两个方式由orm连接数据库
- 由hibernate xml orm文件生成ddl
- Hibernate的XML和annotation两种方式简单例子
- hibernate常见数据库方言和连接方式
- Hibernate ORM和c3p0连接池
- hibernate连接操作两个数据库
- hibernate.cfg.xml配置文件,连接oracle数据库和mysql 数据库
- Hibernate采用*.hbm.xml方式和注释(annotation)插入数据示例
- Spring3与Hibernate4整合,Spring中配置Hibernate基于XML和annotation的sessionFactory方式。
- Hibernate采用*.hbm.xml方式和注释(annotation)插入数据示例
- xml 和 annotation版 (hibernate)
- hibernate xml 和 annotation 对比(一)
- 利用Hibernate Tool 连接数据库, 生成java和hbm.xml
- Hibernate中的Annotation和更新数据库
- Java中常用的两个ORM框架:Hibernate和iBatis
- 使用hibernate连接mysql数据库正向工程hibernate.cfg.xml文件和xxx.hbm.xml配置文件
- spring配置文件applicationContext.xml配置hibernate的连接数据库信息及sessionFactory创建方式
- Hibernate.cfg.xml配置Hibernate连接数据库和对应的数据表
- hibernate
- App如何适应 iPhone 5s/6/6 Plus 三种屏幕的尺寸?(iOS的屏幕适配问题)
- 小希的迷宫
- jdbc连接数据库
- Android Studio 比 Eclipse 好用在哪里
- hibernate annotation和xml两个方式由orm连接数据库
- 【模板下载】innosetup 制作.net安装包的模板
- SQL server 2008 中 对象名无效的问题
- mvc
- spring securigy 初学问题记录
- 遗传算法的理解
- Hibernate映射文件总结
- Redis介绍
- 专题总结:树链剖分入门介绍