下面是MyEclipse中Hibernate自动创建表的方法的完整攻略。
准备工作
- 在MyEclipse中安装Hibernate插件
- 在MyEclipse中创建Java工程
- 导入Hibernate相关的jar包
- 配置Hibernate的配置文件hibernate.cfg.xml
使用Hibernate自动创建表
- 在实体类中添加@Table、@Column等注解,用来映射表和字段
下面是一个示例:
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "name", length = 20)
private String name;
@Column(name = "age")
private int age;
// 省略getter和setter
}
-
在配置文件hibernate.cfg.xml中设置hibernate.hbm2ddl.auto属性为create或update,用来控制自动创建表。
-
create:在启动应用程序时会清空数据库中的所有数据,并创建所有实体对应的表。
- update:在启动应用程序时会根据实体类和表结构自动更新数据库中的表。
下面是一个示例:
<hibernate-configuration>
<session-factory>
<!-- 其他配置 -->
<property name="hibernate.hbm2ddl.auto">update</property>
</session-factory>
</hibernate-configuration>
示例
示例1:创建实体类和配置文件,自动创建表
- 创建一个Java工程,导入Hibernate相关的jar包。
- 创建一个实体类User,用来映射数据库中的user表。
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "name", length = 20)
private String name;
@Column(name = "age")
private int age;
// 省略getter和setter
}
- 配置hibernate.cfg.xml文件,设置连接数据库的相关信息和自动创建表的方式为create。
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">123456</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">create</property>
</session-factory>
</hibernate-configuration>
- 在Main方法中使用Hibernate自动创建表。
public static void main(String[] args) {
Configuration cfg = new Configuration().configure();
SessionFactory sessionFactory = cfg.buildSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
User user = new User();
user.setName("张三");
user.setAge(28);
session.save(user);
session.getTransaction().commit();
session.close();
sessionFactory.close();
}
- 运行程序,在数据库的test库中会自动创建user表。
示例2:创建实体类和配置文件,自动更新表
- 在第一次操作之后,会在数据库中创建user表。
- 修改User实体类中的字段,例如添加一个email字段。
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "name", length = 20)
private String name;
@Column(name = "age")
private int age;
@Column(name = "email", length = 50)
private String email;
// 省略getter和setter
}
- 修改hibernate.cfg.xml文件,将自动创建表的方式改为update。
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">123456</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
</session-factory>
</hibernate-configuration>
- 再次运行程序,在数据库中会自动更新user表,添加了一个email字段。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Myeclipse中hibernate自动创建表的方法 - Python技术站