`
moshowgame
  • 浏览: 42957 次
  • 性别: Icon_minigender_1
  • 来自: 潮州
社区版块
存档分类
最新评论

annotation(注释)版本的hibernate

阅读更多

 

annotation(注释)版本的hibernate,相比xxxx.hbm.xml那种方法,这种显然简单得多了,用得也多。

1.首先看看hibernate.cfg.xml的不同之处,

<session-factory>

<mapping  resource="com/bjsxt/hibernate/Student.hbm.xml"/>

<!--昨天学的.xml配置hibernate方法,得在这里声明映射的XML资源-->

<mapping class="com.bjsxt.hibernate.Teacher"/>

<!--而今天学的这种annotation方法,则得加的是映射类-->

</session-factory>

2.Teacher类

package com.bjsxt.hibernate;

 

import javax.persistence.Entity;

import javax.persistence.Id;

 

@Entity             

//注释一下。注意这里的entiyjavax.persistenceentiy,导入相关的包注意不要导入错了。

//可以在entity下加这句来确定表名@Table(name="teacher")  

public class Teacher {

private int id;

private String name;

private String title;

@Id   // 主键就是注释为@Id 

public int getId() {

return id;

}

//这些一般的property可以不用@注释出来,除非那些多对一、一对多的关系,那些后面学,如果方法名和属性名不同,则要用@column(name='xxx数据库里面的名称'),一般不建议这样。

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

}

 

3.依旧写个测试类

Teacher t = new Teacher();

t.setId(1);

t.setName("t1");

t.setTitle("middle");

SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();

Session session = sessionFactory.getCurrentSession();

session.beginTransaction();

session.save(t);

session.getTransaction().commit();

 

 

4.木有啦,测试!Ok

 

 

 

*常用的hibernate annotation标签如下,- -用到可以查:

@Entity              --注释声明该类为持久类。将一个Javabean类声明为一个实体的数据库表映射类,最好实现序列化.此时,默认情况下,所有的类属性都为映射到数据表的持久性字段.若在类中,添加另外属性,而非映射来数据库的,要用下面的Transient来注解.


@Table(name="promotion_info")      --持久性映射的表(表名="promotion_info).@Table是类一级的注解,定义在@Entity,为实体bean映射表,目录和schema的名字,默认为实体bean的类名,不带包名.
@Id--注释可以表明哪种属性是该类中的独特标识符(即相当于数据表的主键)。 
@GeneratedValue   --定义自动增长的主键的生成策略
@Transient             --将忽略这些字段和属性,不用持久化到数据库.适用于,在当前的持久类中,某些属性不是用于映射到数据表,而是用于其它的业务逻辑需要,这时,须将这些属性进行transient的注解.否则系统会因映射不到数据表相应字段而出错
@Temporal(TemporalType.TIMESTAMP)--声明时间格式 
@Enumerated         --声明枚举 
@Version                --声明添加对乐观锁定的支持 
@OneToOne            --可以建立实体bean之间的一对一的关联 
@OneToMany          --可以建立实体bean之间的一对多的关联 
@ManyToOne          --可以建立实体bean之间的多对一的关联 
@ManyToMany        --可以建立实体bean之间的多对多的关联 
@Formula               --一个SQL表达式,这种属性是只读的,不在数据库生成属性(可以使用sumaveragemax
@OrderBy               --Many端某个字段排序(List)

 

 

 

*HibernateSQL中经常见到column字段名,例如你往学生数据库中插入学生信息表,组成学生信息表中的的学号啊姓名啊性别啊那些就是column字段。

 

 

*。在hibernate.cfg.xml中,还有个要注意的就是hbm2ddl,DDL(Data Definition Language,数据库模式定义语言),就是hibernate自动转换为DDL语言的类型。选择create,那么每次都要drop掉然后再create新的数据,选择update则会每次都更新数据而不是删掉直接再来。一般是update

<!-- Drop and re-create the database schema on startup -->

        <property name="hbm2ddl.auto">update</property>

 

 

 

这是上上周学的,自己小小整理了一下,忘记放出来了。。。

项目文件也给上,mysql的数据库名是hibernate,表名运行后自动生成。。。

项目采用的是JUNTI的测试方法。

0
3
分享到:
评论
4 楼 moshowgame 2012-07-27  
jsyzthz08 写道
moshowgame 写道
jsyzthz08 写道
我想问下,数据库里面每个自动的描述,比如name的数据库字段描述可以是“姓名”。这个如果在注解中如何去实现?

@Table(name="table_person") //在class上面可以指定表名,该类对应什么表
public class Person{
@Column(name = "pname", length = 100,unique = true) //在属性上面可以指定数据库字段,并且长度、是否唯一等等
private string name;
......
}

我是要找字段属性的描述注解的标签,比如数据库中user表中的username的描述属性应该是“用户名”,就是这个“用户名”我改怎么在注解上添加。



可以用用@DiscriminatorColumn标签:

[size=xx-large]@DiscriminatorColumn(name="用户名", discriminatorType=STRING, length=100)
private string username;

[/size]
3 楼 jsyzthz08 2012-07-27  
moshowgame 写道
jsyzthz08 写道
我想问下,数据库里面每个自动的描述,比如name的数据库字段描述可以是“姓名”。这个如果在注解中如何去实现?

@Table(name="table_person") //在class上面可以指定表名,该类对应什么表
public class Person{
@Column(name = "pname", length = 100,unique = true) //在属性上面可以指定数据库字段,并且长度、是否唯一等等
private string name;
......
}

我是要找字段属性的描述注解的标签,比如数据库中user表中的username的描述属性应该是“用户名”,就是这个“用户名”我改怎么在注解上添加。
2 楼 moshowgame 2012-07-23  
jsyzthz08 写道
我想问下,数据库里面每个自动的描述,比如name的数据库字段描述可以是“姓名”。这个如果在注解中如何去实现?

@Table(name="table_person") //在class上面可以指定表名,该类对应什么表
public class Person{
@Column(name = "pname", length = 100,unique = true) //在属性上面可以指定数据库字段,并且长度、是否唯一等等
private string name;
......
}
1 楼 jsyzthz08 2012-07-23  
我想问下,数据库里面每个自动的描述,比如name的数据库字段描述可以是“姓名”。这个如果在注解中如何去实现?

相关推荐

    sping hibernate Annotation(注释配置) demo(例子)

    总结来说,这个 "Spring Hibernate Annotation demo" 展示了如何在 Spring 框架中使用注解配置来管理依赖,以及如何利用 Hibernate 的注解进行数据持久化。同时,它还涉及到了 Flex 前端与后端的交互。通过学习这个 ...

    Hibernate-Annotation中文教程.pdf

    传统上,Hibernate 的配置依赖于外部 XML 文件,而最近发布的几个 Hibernate 版本中,出现了一种基于 Java 5 注释的更为巧妙的新方法,即 Hibernate Annotation 库。借助新的 Hibernate Annotation 库,即可一次性地...

    Hibernate-Annotation中文教程.docx

    在最近发布的几个 Hibernate 版本中,出现了一种基于 Java 5 注释的更为巧妙的新方法。借助新的 Hibernate Annotation 库,即可一次性地分配所有旧映射文件——一切都会按照您的想法来定义——注释直接嵌入到您的 ...

    hibernate注释源程序

    本篇文章将深入探讨Hibernate中的注释(Annotation)使用以及级联操作,并通过一个简单的源程序实例进行解析。 ### Hibernate 注释 在Hibernate 3.x版本之后,注释成为了一种主流的元数据定义方式,替代了传统的...

    hibernate-主键生成方式[自动、手动]-annotation

    本文是讲解的是hibernate3.2的主键生成方式,通过annotation来实现,详细的分析了主键在hibernate的生成以及在真实项目的运用。。。。

    使用annotation获取实体类注释

    这篇博客“使用annotation获取实体类注释”主要探讨了如何利用注解来增强代码的可读性和可维护性,同时介绍了如何从实体类中获取已定义的注解信息。以下是关于这个主题的一些关键知识点: 1. **注解定义**:注解以`...

    基于Maven,Struts2, Spring,Hibernate全注释的开发框架

    使用Maven3.0.5, Struts2, Spring, Hibernate3, annotation实现零配置的开发框架.里面有详细的开发指导文档, 后台用googlecode的 hibernate-generic-dao - Generic DAO 和 Search的代码,完全进行封装. 由于Generic ...

    hibernate中的注释的几种配置方式

    &lt;bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"&gt; &lt;value&gt;xxx.xxx.xxx.domain.Account ``` - **LocalSessionFactoryBean**:同样是...

    hibernate3 注释生成复合主键或者嵌入式主键的方法及实例.doc

    在Hibernate3中,虽然XML配置文件是主要的元数据来源,但随着版本的升级,Annotation逐渐成为更便捷的方式来描述实体类与数据库表之间的映射关系。这篇文档将介绍如何使用Hibernate注解来生成复合主键或嵌入式主键。...

    Java Annotation

    - **Hibernate/JPA**:使用注解简化了实体映射的过程。 - **JUnit**:通过 `@Test`、`@Before`、`@After` 等注解来组织单元测试代码。 - **EclipseLink**:使用注解来进行对象关系映射。 #### 七、Java Annotation ...

    实体类注释避免配置xml文件

    本文将深入探讨如何通过实体类注释(即Java Annotation)来简化Hibernate框架下的对象关系映射(ORM),从而避免了传统XML配置文件的冗余与繁琐。在现代的Java开发中,尤其是基于ORM框架如Hibernate的应用开发,实体...

    Hibernate 的Xdoclet模板

    6. **替代方案**:鉴于现代的Java开发环境,文章可能会提及现代的替代方案,如使用Hibernate的注解处理(Annotation Processor)或者Lombok等库,它们同样可以实现代码生成,但更符合当前的开发趋势。 7. **示例...

    EJB 注释精解(pdf版)

    例如,JBoss 4.0.5.GA将`@EJB`注释从`javax.annotation`包移动到了`javax.ejb`包中。 #### 三、@Resource 注释 ##### 1. @Resource 注释简介 `@Resource`注释与`@EJB`类似,但更加通用。它可以用来注入来自JNDI的...

    注释Hibernate

    "注释Hibernate"主要探讨的是如何通过Java注解来配置和使用Hibernate,而不是传统的XML配置文件。这使得代码更加简洁、易于理解和维护。 首先,我们需要理解Hibernate的核心概念,如实体类(Entity)、持久化...

    spring+hibernate

    在“spring+hibernate”的完整程序中,通常会利用Spring的DI来管理Hibernate的SessionFactory和Session,通过注解(Annotation)来配置实体类和映射信息。例如,使用`@Entity`标记实体类,`@Table`定义对应的数据库...

    Hibernate4_Inheritance_Annotation:该程序演示了如何使用 Annotations 在 Hibernate 中使用继承

    Hibernate4_Inheritance_Annotation 该程序演示了如何使用 Annotations 在 Hibernate 中使用继承。 Hibernate 支持 3 种类型的继承 每个具体类一个表 - 每个子类都有一个表,该表也具有超类的所有属性。 (TABLE_PER...

    hibernate-conditions.jar

    扩展了hibernate的查询,主要是使用了通过注释方式把一个实体的变量注释成一个查询的条件.

Global site tag (gtag.js) - Google Analytics