(1)生成数据库表的创建:

  1. // 默认读取hibernate.cfg.xml文件
  2. Configuration cfg = new Configuration().configure();
  3.  
  4. // 生成并输出sql到文件(当前目录)和数据库
  5. SchemaExport export = new SchemaExport(cfg);
  6.  
  7. // 创建表结构,第一个true 表示在控制台打印sql语句,第二个true 表示导入sql语句到数据库
  8. export.create(true, true);

(2)Hibernate.cfg.xml文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-configuration PUBLIC
  3. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  4. "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
  5.  
  6. <hibernate-configuration>
  7. <session-factory>
  8. <!-- 必须去配置的属性 -->
  9. <!-- 配置数据库连接的基本信息: -->
  10. <property name="hibernate.connection.driver_class">
  11. com.mysql.jdbc.Driver
  12. </property>
  13. <property name="hibernate.connection.url">
  14. jdbc:mysql:///hibernate
  15. </property>
  16. <property name="hibernate.connection.username">root</property>
  17. <property name="hibernate.connection.password">123456</property>
  18. <!-- Hibernate的方言 -->
  19. <!-- 生成底层SQL不同的 -->
  20. <property name="hibernate.dialect">
  21. org.hibernate.dialect.MySQLDialect
  22. </property>
  23.  
  24. <!-- 可选的属性 -->
  25. <!-- 显示SQL -->
  26. <property name="hibernate.show_sql">true</property>
  27. <!-- 格式化SQL -->
  28. <property name="hibernate.format_sql">true</property>
  29. <!-- hbm:映射 to DDL: create drop alter -->
  30. <property name="hibernate.hbm2ddl.auto">update</property>
  31.  
  32. <!-- 通知Hibernate加载那些映射文件 -->
  33. <mapping resource="cn/lonecloud/domain/User.hbm.xml" />
  34. <mapping resource="cn/lonecloud/domain/Customer.hbm.xml" />
  35. <mapping resource="cn/lonecloud/domain/Order.hbm.xml" />
  36.  
  37. </session-factory>
  38. </hibernate-configuration>

(3)log4j.properties文件

  1. ### direct log messages to stdout ###
  2. log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  3. log4j.appender.stdout.Target=System.err
  4. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
  5. log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
  6.  
  7. ### direct messages to file mylog.log ###
  8. log4j.appender.file=org.apache.log4j.FileAppender
  9. log4j.appender.file.File=c\:mylog.log
  10. log4j.appender.file.layout=org.apache.log4j.PatternLayout
  11. log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
  12.  
  13. ### set log levels - for more verbose logging change 'info' to 'debug' ###
  14.  
  15. log4j.rootLogger=off, stdout

(4)User.java

  1. package cn.lonecloud.domain;
  2.  
  3. import java.io.Serializable;
  4. import java.lang.reflect.Field;
  5. import java.lang.reflect.Method;
  6. import java.util.Date;
  7.  
  8. public class User implements Serializable,Cloneable {
  9.  
  10. private String id;
  11. private String name;
  12. private String password;
  13. private Date birthday;
  14. public User(){
  15. System.out.println("user");
  16. }
  17. public String getId() {
  18. return id;
  19. }
  20. public void setId(String id) {
  21. this.id = id;
  22. }
  23. public String getName() {
  24. return name;
  25. }
  26. public void setName(String name) {
  27. this.name = name;
  28. }
  29. public String getPassword() {
  30. return password;
  31.  
  32. }
  33. public void setPassword(String password) {
  34. this.password = password;
  35. }
  36. public Date getBirthday() {
  37. return birthday;
  38. }
  39. public void setBirthday(Date birthday) {
  40. this.birthday = birthday;
  41. }
  42. @Override
  43. public Object clone() throws CloneNotSupportedException {
  44. Class clazz = User.class;
  45. User user =null;
  46. try {
  47. user = (User)clazz.newInstance();
  48. /*user.setBirthday(this.birthday);
  49. user.setId(this.id);
  50. user.setPassword(this.password);
  51. user.setName(this.name);*/
  52. Field[] declaredFields = clazz.getDeclaredFields();
  53. for(Field field :declaredFields){
  54. Class<?> parameterTypes = field.getType();
  55. String fieldName = field.getName();
  56. String methodName = "set"+fieldName.substring(0,1).toUpperCase()+field.getName().substring(1);
  57. Method method = clazz.getDeclaredMethod(methodName, parameterTypes);
  58. field.setAccessible(true);
  59. method.invoke(user,field.get(this));
  60. }
  61. return user;
  62. } catch (Exception e) {
  63. e.printStackTrace();
  64. }
  65. return null;
  66. }
  67.  
  68. }

(5).user.hbm.xml

  1. <?xml version="1.0"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC
  3. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  5. <hibernate-mapping package="cn.lonecloud.domain" >
  6. <class name="User" table="t_user" select-before-update="false">
  7. <!--hibernate为我们生成主键id-->
  8. <id name="id">
  9. <generator class="uuid" />
  10. </id>
  11.  
  12. <!--默认把类的变量映射为相同名字的表列,当然我们使用column属性修改表字段-->
  13. <property name="name" column="names"></property>
  14. <property name="password"></property>
  15. <property name="birthday" type="date"></property> <!--当为日期类型的时候标明date类型-->
  16.  
  17. </class>
  18. </hibernate-mapping>

6.Customer.java

  1. package cn.lonecloud.domain;
  2.  
  3. import java.io.Serializable;
  4. import java.util.HashSet;
  5. import java.util.Set;
  6.  
  7. public class Customer implements Serializable {
  8.  
  9. private String id;
  10.  
  11. private String customerName;
  12.  
  13. private Set<Order> orders = new HashSet<Order>();
  14.  
  15. public String getId() {
  16. return id;
  17. }
  18.  
  19. public void setId(String id) {
  20. this.id = id;
  21. }
  22.  
  23. public String getCustomerName() {
  24. return customerName;
  25. }
  26.  
  27. public void setCustomerName(String customerName) {
  28. this.customerName = customerName;
  29. }
  30.  
  31. public Set<Order> getOrders() {
  32. return orders;
  33. }
  34.  
  35. public void setOrders(Set<Order> orders) {
  36. this.orders = orders;
  37. }
  38.  
  39. }

7.Customer.hbm.xml

  1. <?xml version="1.0"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC
  3. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  5. <hibernate-mapping package="cn.lonecloud.domain" >
  6. <class name="Customer" table="t_customer" lazy="true">
  7. <!--hibernate为我们生成主键id-->
  8. <id name="id">
  9. <generator class="uuid" />
  10. </id>
  11.  
  12. <!--默认把类的变量映射为相同名字的表列,当然我们使用column属性修改表字段-->
  13. <property name="customerName" column="customerName"></property>
  14. <set name="orders" lazy="extra" fetch="join" cascade="all-delete-orphan"> <!-- lazy fetch -->
  15. <key column="customer_id"></key>
  16. <one-to-many class="cn.lonecloud.domain.Order"/>
  17. </set>
  18.  
  19. </class>
  20. </hibernate-mapping>

8.Order.java

  1. package cn.lonecloud.domain;
  2.  
  3. import java.io.Serializable;
  4.  
  5. public class Order implements Serializable{
  6.  
  7. private String id;
  8.  
  9. private String orderNumber;
  10.  
  11. private float price;
  12.  
  13. private Customer customer;
  14.  
  15. public Customer getCustomer() {
  16. return customer;
  17. }
  18.  
  19. public void setCustomer(Customer customer) {
  20. this.customer = customer;
  21. }
  22.  
  23. public String getId() {
  24. return id;
  25. }
  26.  
  27. public void setId(String id) {
  28. this.id = id;
  29. }
  30.  
  31. public String getOrderNumber() {
  32. return orderNumber;
  33. }
  34.  
  35. public void setOrderNumber(String orderNumber) {
  36. this.orderNumber = orderNumber;
  37. }
  38.  
  39. public float getPrice() {
  40. return price;
  41. }
  42.  
  43. public void setPrice(float price) {
  44. this.price = price;
  45. }
  46.  
  47. }

9.Order.hbm.xml

  1. <?xml version="1.0"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC
  3. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  5. <hibernate-mapping package="cn.lonecloud.domain" >
  6. <class name="Order" table="t_order" >
  7. <!--hibernate为我们生成主键id-->
  8. <id name="id">
  9. <generator class="uuid" />
  10. </id>
  11.  
  12. <!--默认把类的变量映射为相同名字的表列,当然我们使用column属性修改表字段-->
  13. <property name="orderNumber" column="orderNumber"></property>
  14. <property name="price" column="price"></property>
  15. <many-to-one name="customer" class="cn.lonecloud.domain.Customer">
  16. <column name="customer_id"/>
  17. </many-to-one>
  18. </class>
  19. </hibernate-mapping>

Hibernate学习(一)创建数据表的更多相关文章

  1. oracle的学习 第二节:创建数据表

    学习内容: A.创建数据库和表空间 B.创建用户和分配权限 C.创建数据表 一.创建数据库和表空间 (一)SQL语言的基本概念 1.概念 高级的结构化查询语言:沟通数据库服务器和客户的重要桥梁. PL ...

  2. 学习笔记之--Navicat Premium创建数据表

    1.打开Navicat Premium,点击连接,选择MySQL,创建新连接.输入安装MySQL是的用户名和密码.点击确定. 2.admin数据连接已经创建成功.下面为admin新建数据库,输入数据库 ...

  3. MySQL学习笔记_2_MySQL创建数据表(上)

    MySQL创建数据表(上) 一.创建数据表的SQL语句模型[弱类型] CREATETABLE [IF NOT EXISTS] 表名称( 字段名1列的类型[属性][索引], 字段名2 列的类型[属性][ ...

  4. Mysql学习(慕课学习笔记4)创建数据表、查看数据表、插入记录

    创建数据表 Create table [if not exists] table_name(column_name data_type,…….) UNSIGNED 无符号SIGNED 有符号 查看创建 ...

  5. MySQL学习笔记_4_MySQL创建数据表(下)

    MySQL创建数据表(下) 五.数据表类型及存储位置 1.MySQL与大多数数据库不同,MySQL有一个存储引擎概念.MySQL可以针对不同的存储需求选择不同的存储引擎. 2. showengines ...

  6. MySQL学习笔记_3_MySQL创建数据表(中)

    MySQL创建数据表(中) 三.数据字段属性 1.unsigned[无符号] 可以让空间增加一倍 比如可以让-128-127增加到0-255 注意:只能用在数值型字段 2.zerofill[前导零] ...

  7. 吴裕雄--天生自然MySQL学习笔记:MySQL 创建数据表

    创建MySQL数据表需要以下信息: 表名 表字段名 定义每个表字段 语法 以下为创建MySQL数据表的SQL通用语法: CREATE TABLE table_name (column_name col ...

  8. 【spring boot】spring boot 2.0 项目中使用mysql驱动启动创建的mysql数据表,引擎是MyISAM,如何修改启动时创建数据表引擎为【spring boot 2.0】

    默认创建数据表使用的引擎是MyISAM 2018-05-14 14:16:37.283 INFO 7328 --- [ restartedMain] org.hibernate.dialect.Dia ...

  9. mysql之创建数据库,创建数据表

    写在前面 项目中用到mysql数据库,之前也没用过mysql,今天就学下mysql的常用的语法,发现跟sql server的语法极其相似.用起来还是蛮简单的. 一个例子 1.创建一个名为School的 ...

  10. SpringBoot+Mybatis 自动创建数据表(适用mysql)

    Mybatis用了快两年了,在我手上的发展史大概是这样的 第一个阶段 利用Mybatis-Generator自动生成实体类.DAO接口和Mapping映射文件.那时候觉得这个特别好用,大概的过程是这样 ...

随机推荐

  1. shell 实现主板测试

    初接触shell,只能需要用到什么功能现学先用了.本文总结一下完成测试程序当中遇到的技巧和问题. 01. 变量生存期的问题,在函数中的变量无法在其他地方使用,在函数中只能使用在函数前定义的全局变量: ...

  2. java.lang.ClassNotFoundException: com.radiadesign.catalina.session.RedisSessionHandlerValve

    org.apache.tomcat.util.digester.Digester.startElement Begin event threw exception java.lang.ClassNot ...

  3. BSA Network Shell系列-nlogin命令

    nlogin 1 说明 nlogin 是一种通过RSCD Agent的通信的安全远程登录,使用和NSH工具相同的加密协议.可以作为telnet.rlogin或者ssh的替代工具(假如这些端口或协议禁用 ...

  4. 用Python实现几种排序算法

    #coding=utf-8 # 1 快速排序算法 def qksort(list): if len(list)<=1: return list else: pivot = list[0] les ...

  5. rem与@media 的优缺点

    首先:   如果我们在做单独移动端网站或者app的时候  我建议  使用 rem  ; 他能让我们在手机各个机型的适配方面:大大减少我们代码的重复性,是我们的代码更兼容. 下面两个图一个调试在常用的机 ...

  6. Mysql高可用架构(主从同步)

    做高可用的优势 1.成本低 2.解决单点故障 3.不容易遇到性能瓶颈 一 .Mysql主从同步架构搭建案例 优点如下:·在业务繁忙阶段,在从服务器上可以执行查询工作(即我们常说的读写分离),降低主服务 ...

  7. typedef和#define的简单比较

    1.通常说typedef比#define要好,尤其在有指针的情况下 typedef char* pStr1; #define pStr2 char* pStr1 s1,s2; pStr2 s3,s4; ...

  8. JAVA List根据字段排序以及取前几条数据

    1.经常会遇到对组装的list排序或提取list中前几条数据,例如: 根据时间排序: list.sort((o1, o2) -> o2.getCreateTime().compareTo(o1. ...

  9. 在线生成PDF的网站-HTML 转 PDF 在线

    http://pdf.df5d.com/   (服务器问题,演示暂停了,但是 下面介绍的组件还是可以使用的) 将前面用到的wkhtmltopdf用一个服务器程序集成在一起,接受一个URL参数,在生成一 ...

  10. 备忘:Junit单元测试

    junit 目前测试都是在main方法中调用目前的结果都需要人工对比是否是想要的 1.使用Junit测试方法,绿色条条代表方法测试成功,没有bug,如果是红色条条代表有异常,测试不通过2.点击方法名. ...