批量产生ssh2项目中hibernate带注解的pojo类的快捷方法

近几个月一直在忙于项目组的ios应用项目的开发,没有太多时间去研究web应用方面的问题了。刚好,昨天有网友问到如何批量产生hibernate带注解的pojo类的快捷方法,所谓批量就是指将当前数据库中所有数据表全部一次性生成带注解的pojo类,假设当前数据库friend有50个数据表,如果一个个的新建产生pojo类的话,那就是说要手工输入新建50个pojo类后,还有输入每个类带注解的代码,并且还要写好有关联的类之间的映射关系,虽然,从学习的角度来说,手工写是个不错的主意,但是从开发效率和开发成本来说,那可不是一件好事了,手工一个个创建50个有一定关联关系的pojo类,可不是一件小工作量的事情了,当然最后批量成的pojo类中,根据实际情况,特别是主键@id的生成策略根据实际情况可能需要有针对性的小改动一下。因此,提高日常工作中的开发效率是java开发人员必须关注的事件了。。这里,网络时空(阿堂)就给有此需要的网友,分别介绍在eclipse和myeclipse中用hibernate tools操作的详细步骤,截图后放上来,供有需要的朋友参考了!
(下载和安装hibernate tools的步骤,这比较简单,阿堂就省略了)

一.Eclipse环境

二.Myeclipse环境


下面详细说明上面使用到的注解。

@Entity:通过@Entity注解将一个类声明为一个实体bean
@Table:通过 @Table注解可以为实体bean映射指定表,name属性表示实体所对应表的名称,如果没有定义 @Table,那么系统自动使用默认值:实体的类名(不带包名)
@Id:用于标记属性的主键
@Column:表示持久化属性所映射表中的字段,如果属性名与表中的字段名相同,则可以省略@Column注解,另外有两种方式标记,一是放在属性前,另一种是放在getter方法前,例如:

@Column(name = "ad_pass")
private String adPass;

或者

@Column(name = "ad_pass")
public String getAdPass() {
return this.adPass;
}

这两种方式都是正解的,根据个人喜好来选择。大家偏向于第二种,并且喜欢将属性名与字段名设成一样的,这样可以省掉@Column注解,使代码更简洁。
@TableGenerator:表生成器,将当前主键的值单独保存到一个数据库表中,主键的值每次都是从指定的表中查询来获得,这种生成主键的方式是很常用的。这种方法生成主键的策略可以适用于任何数据库,不必担心不同数据库不兼容造成的问题。这种方式管理主键,很方便,集中式管理表的主键,而且更换数据库不会造成很大的问题。各属性含义如下:
name:表示该表主键生成策略的名称,这个名字可以自定义,它被引用在@GeneratedValue中设置的"generator"值中
table:表示表生成策略所持久化的表名,说简单点就是一个管理其它表主键的表,本例中,这个表名为GENERATOR_TABLE
pkColumnName:表生成器中的列名,用来存放其它表的主键键名,这个列名是与表中的字段对应的
pkColumnValue:实体表所对应到生成器表中的主键名,这个键名是可以自定义滴
valueColumnName:表生成器中的列名,实体表主键的下一个值,假设admin表中的ad_id最大为2,那么此时,生成器表中与实体表主键对应的键名值则为3
allocationSize:表示每次主键值增加的大小,例如设置成1,则表示每次创建新记录后自动加1,默认为50
@GeneratedValue:定义主键生成策略,这里因为使用的是TableGenerator,所以,主键的生成策略为GenerationType.TABLE,生成主键策略的名称则为前面定义的”tab-store”。
这要说明的是,网上有很多文章写的是strategy = GenerationType.AUTO或是strategy = GenerationType.SEQUENCE,采用SEQUENCE序列是因为Oracle数据中不支持identity自动增长,要想使用它,还得在数据库中创建一个序列,如果要更换数据库,那将是一个非常麻烦的事情。SEQUENCE生成方式我们暂且不谈,这里说下采用AUTO和IDENTITY的生成方式,如果是采用的是SQL Server 作为数据库,所以如果想使用AUTO或是IDENTITY生成策略,则一定要对主键加上identity标识,如identity(1,1)。不过对于AUTO来说,是根据不同的数据库选择最合适的自增主键生成策略。如果使用MySQL,则主键要定义AUTO_INCREMENT,如果是Oracle,则要创建Sequence来实现自增。

在oracle中主键用序列一般写法如下

// 自增长主键
    @Id
    @Column(name = "GOODS_ID", unique = true, nullable = false, precision = 38, scale = 0)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "GAME_GOODS_SEQ")
    @SequenceGenerator(name = "GAME_GOODS_SEQ", allocationSize = 1, initialValue = 1, sequenceName = "GAME_GOODS_SEQ")
    private Long goodsID;
   
    // 类别ID
    @Column(name = "CATEGORY_ID", nullable = false, precision = 38, scale = 0)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "GAME_CATEGORY_SEQ")
    @SequenceGenerator(name = "GAME_CATEGORY_SEQ", allocationSize = 1, initialValue = 1, sequenceName = "GAME_CATEGORY_SEQ")
    private Long categoryId;

时间: 2024-08-05 20:52:44

批量产生ssh2项目中hibernate带注解的pojo类的快捷方法的相关文章

Eclipse中通过Hibernate Tools插件实现从数据库逆向生成Hibernate带注解的实体类

一.安装hibernate tools插件 1.在线安装 通过Eclipse的Help->Install New Software 在线安装插件,插件连接为: eclipse helios(3.6)版 添加如下地址:http://download.jboss.org/jbosstools/updates/stable/helios/ 选择性安装:hibernate tools在All Jboss tools节点下面 eclipse indigo(3.7)版 添加如下地址:http://downl

Eclipse从数据库逆向生成Hibernate带注解的实体类

新增Hibernate配置文件: [1]右键选择项目->New->Others,选择新增Hibernate配置文件 [2]填写相应的参数 新增数据库配置文件 [1]打开 Hibernate Configurations模块,新增Add Configuration 选择数据库: 选择UTF-8编码: 生成代码注解类:

在SSH2项目中添加JBPM4的开发环境

1.导入JBPM4开发所需的jar包,注意不要和原有的SSH2jar包冲突,启动tomcat,如果正常,则进行下一步的操作 2.将下面的JBPM4的映射文件代码,写入到hibernate.cfg.xml配置文件中: <!-- 导jpbm入映射文件 --> <mapping resource="jbpm.repository.hbm.xml" /> <mapping resource="jbpm.execution.hbm.xml" /&

利用HibernateTools从数据库表生成带注解的POJO

引用:http://www.cnblogs.com/mingziday/p/4475124.html 在SSH框架中,如果先设计好了数据库,那么下一步就需要从数据库Table生成实体java类和hbm.xml配置文件.在最新的开发框架中,已经支持使用注解,从而避免了繁琐的hbm.xml配置,而且我们可以借助HibernateTools工具完成从Table到实体Java类的转换. 1.首先把HibernateTools插件安装到Eclipse上 打开Eclispe,按照如下操作完成插件安装 Hel

Visual Studio 2008项目中WinForm窗体图标显示为类图标,只能打开代码而无法打开视图问题解决

背景: 今天打开一个Winform项目的时候,图标显示为类文件的样子而不是窗体的样子,在代码中右键也没有View Designer选项,双击图标打开的是代码而非窗体设计界面,百度后也没有找到解决方案. 解决方法(不一定通用): 1.编译项目查看有没有错误. 2.查看WinForm窗体继承的窗体文件可以打开不?有没有问题 3.签出代码,在undocheckout,编译,查看是否可以了 4.查看该项目有没有被其他人签出,如果被签出,让他们签入,再获取一下最新版本代码,编译,看看是不是可以了(我在这一

(21)项目中Hibernate Session的管理方式

1.openSession和getCurrentSession的区别 package com.rk.hibernate.cache; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.junit.Test; public class App_SessionInProject { private static Se

在Spring项目中使用@Scheduled注解定义简单定时任务

如题所示,有时候我们需要在Web项目中配置简单的定时任务,而且因为任务并不复杂不想使用定时调度框架(PS:Quartz.ActiveMQ .Kafka等),这时就可以考虑使用@Scheduled注解来定义简单的定时任务.其全部配置如下: (1)在Spring的配置文件中添加定时任务相关配置: xml配置的头文件中添加: xmlns:task="http://www.springframework.org/schema/task" 以及在xsi:schemaLocation中添加: ht

Spring依赖注入——java项目中使用spring注解方式进行注入

注解注入顾名思义就是通过注解来实现注入,Spring和注入相关的常见注解有Autowired.Resource.Qualifier.Service.Controller.Repository.Component. Autowired是自动注入,自动从spring的上下文找到合适的bean来注入 Resource用来指定名称注入 Qualifier和Autowired配合使用,指定bean的名称 Service,Controller,Repository分别标记类是Service层类,Contro

如何批量测试Mybatis项目中SQL是否正确

去Oracle行动 最近公司要发展海外项目,所以要将现有的系统全部平移过去,另外数据库也要从原来的Oracle变为Mysql.公司的数据库交互层面使用的是Mybatis,而Oracle与Mysql也有一些语法上的不同.所以在项目中的Sql要改动,但是多个项目中涉及到的Sql非常多,如果仅凭人工一条一条辨别的话,工作量有点大. 所以就萌发出了直接将数据源变为Mysql,利用反射批量执行Mapper中的方法,然后如果有参数的话,就设置为默认的初始值,然后记录下来成功的数据和失败的数据,这样就可以根据