当前位置:首页>开发>正文

在Myeclipse中,用Hibernate根据实体类自动生成表的详细步骤。谢谢! spring和hibernate整合时怎样设置自动生成数据库的表

2023-04-18 09:45:58 互联网 未知 开发

 在Myeclipse中,用Hibernate根据实体类自动生成表的详细步骤。谢谢! spring和hibernate整合时怎样设置自动生成数据库的表

在Myeclipse中,用Hibernate根据实体类自动生成表的详细步骤。谢谢!

hibernate.hbm2ddl.auto参数的作用主要用于:自动创建|更新|验证数据库表结构。
create:
每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。
create-drop :
每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
update:
最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等应用第一次运行起来后才会。
validate :
每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

spring和hibernate整合时怎样设置自动生成数据库的表

class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" p:dataSource-ref="dataSource"> org.hibernate.dialect.MySQLInnoDBDialect true true update
起作用的是update这一句,自动建表

hibernate怎么通过实体类创建数据库表

答案转载自:http://blog.csdn.net/lixuyuan/article/details/8057Hibernate支持自动建表,在开发阶段很方便,可以保证hbm与数据库表结构的自动同步。

如何使用呢?很简单,只要在hibernate.cfg.xml里加上如下代码
Xml代码update

update:表示自动根据model对象来更新表结构,启动hibernate时会自动检查数据库,如果缺少表,则自动建表;如果表里缺少列,则自动添加列。

还有其他的参数:
create:启动hibernate时,自动删除原来的表,新建所有的表,所以每次启动后的以前数据都会丢失。

create-drop:启动hibernate时,自动创建表,程序关闭时,自动把相应的表都删除。所以程序结束时,表和数据也不会再存在。

PS:数据库要预先建立好,因为hibernate只会建表,不会建库

使用hibernate注解自动建表

@Entity
@Table(name="a")
public class A {
@Id
private String id
private String name
@ManyToMany(targetEntity=C.class,cascade={CascadeType.ALL},mappedBy="a")
private List c=new ArrayList()
@ManyToMany(targetEntity=B.class,cascade={CascadeType.ALL})
@JoinTable(name="a_b",joinColumns=@JoinColumn(name="a_id"),inverseJoinColumns=@JoinColumn(name="b_id"))
private Listb=new ArrayList() public String getId() { return id } public void setId(String id) { this.id = id } public String getName() { return name } public void setName(String name) { this.name = name } public List getC() { return c } public void setC(List c) { this.c = c } public List getB() { return b } public void setB(List b) { this.b = b } } @Entity @Table(name="b") public class B { @Id private String id private String name @ManyToMany(targetEntity=A.class,cascade={CascadeType.ALL},mappedBy="b") private List a=new ArrayList() @ManyToMany(targetEntity=C.class,cascade={CascadeType.ALL}) @JoinTable(name="b_c",joinColumns=@JoinColumn(name="b_id"),inverseJoinColumns=@JoinColumn(name="c_id")) private List c=new ArrayList() public String getId() { return id } public void setId(String id) { this.id = id } public String getName() { return name } public void setName(String name) { this.name = name } public List getA() { return a } public void setA(List a) { this.a = a } public List getC() { return c } public void setC(List c) { this.c = c } } @Entity @Table(name="c") public class C { @Id private String id private String name @ManyToMany(targetEntity=A.class,cascade={CascadeType.ALL}) @JoinTable(name="c_a",joinColumns=@JoinColumn(name="c_id"),inverseJoinColumns=@JoinColumn(name="a_id")) private List a=new ArrayList() @ManyToMany(targetEntity=B.class,cascade={CascadeType.ALL},mappedBy="c") private List b=new ArrayList() public String getId() { return id } public void setId(String id) { this.id = id } public String getName() { return name } public void setName(String name) { this.name = name } public List getA() { return a } public void setA(List a) { this.a = a } public List getB() { return b } public void setB(List b) { this.b = b } }

hibernate利用实体类生成数据库表

hibernate的生成主键策略有好几种,有数据库管理主键,有应用程序管理主键,sqlserver数据库的主机那ID可以自动生成,oracle不能自动生成。
java 类中
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)//主键自增,注意,这种方式依赖于具体的数据库,如果数据库不支持自增主键,那么这个类型是没法用的;strategy:表示主键生成策略,有AUTO,INDENTITY,SEQUENCE 和 TABLE 4种,分别表示让ORM框架自动选择, 根据数据库的Identity字段生成,根据数据库表的Sequence字段生成,以有根据一个额外的表生成主键,默认为AUTO 。
看看能不能帮助你啊!

hibernate怎么根据实体类生成数据库表

楼主您好
用SchemaExport类即可实现,具体可以搜索下,类似这样
Configuration conf= new Configuration().addClass(User.class)

//生成并输出sql到文件(当前目录)和数据库
SchemaExport dbExport=new SchemaExport(conf)
dbExport.create(true, true)
}

hibernate自动建表(createTable)bit->tinyint

mysql数据库中 BOOLEAN的类型默认就是BIT(1)吧
因为就象ORACLE中的返回的NUMBER都是LONG型一样 如果想在JAVA中得到INT型 就必须用封装类 转换下,因为我MYSQL用的少 基本都有ORACLE所以我不能确定,你可以尝试下!
希望对你有帮助!

在没有事先创建表的情况下怎样通过hibernate注解来生成表

据数据库表的Sequence字段生成,以有根据一个额外的表生成主键,默认为AUTO generator:表示主键生成器的名称,这个属性通常和ORM框架相关,例如,Hibernate可以指定uuid...

最新文章