Hibernate学习(一)创建数据表
(1)生成数据库表的创建:
- // 默认读取hibernate.cfg.xml文件
- Configuration cfg = new Configuration().configure();
- // 生成并输出sql到文件(当前目录)和数据库
- SchemaExport export = new SchemaExport(cfg);
- // 创建表结构,第一个true 表示在控制台打印sql语句,第二个true 表示导入sql语句到数据库
- export.create(true, true);
(2)Hibernate.cfg.xml文件
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
- <hibernate-configuration>
- <session-factory>
- <!-- 必须去配置的属性 -->
- <!-- 配置数据库连接的基本信息: -->
- <property name="hibernate.connection.driver_class">
- com.mysql.jdbc.Driver
- </property>
- <property name="hibernate.connection.url">
- jdbc:mysql:///hibernate
- </property>
- <property name="hibernate.connection.username">root</property>
- <property name="hibernate.connection.password">123456</property>
- <!-- Hibernate的方言 -->
- <!-- 生成底层SQL不同的 -->
- <property name="hibernate.dialect">
- org.hibernate.dialect.MySQLDialect
- </property>
- <!-- 可选的属性 -->
- <!-- 显示SQL -->
- <property name="hibernate.show_sql">true</property>
- <!-- 格式化SQL -->
- <property name="hibernate.format_sql">true</property>
- <!-- hbm:映射 to DDL: create drop alter -->
- <property name="hibernate.hbm2ddl.auto">update</property>
- <!-- 通知Hibernate加载那些映射文件 -->
- <mapping resource="cn/lonecloud/domain/User.hbm.xml" />
- <mapping resource="cn/lonecloud/domain/Customer.hbm.xml" />
- <mapping resource="cn/lonecloud/domain/Order.hbm.xml" />
- </session-factory>
- </hibernate-configuration>
(3)log4j.properties文件
- ### direct log messages to stdout ###
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.Target=System.err
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
- log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
- ### direct messages to file mylog.log ###
- log4j.appender.file=org.apache.log4j.FileAppender
- log4j.appender.file.File=c\:mylog.log
- log4j.appender.file.layout=org.apache.log4j.PatternLayout
- log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
- ### set log levels - for more verbose logging change 'info' to 'debug' ###
- log4j.rootLogger=off, stdout
(4)User.java
- package cn.lonecloud.domain;
- import java.io.Serializable;
- import java.lang.reflect.Field;
- import java.lang.reflect.Method;
- import java.util.Date;
- public class User implements Serializable,Cloneable {
- private String id;
- private String name;
- private String password;
- private Date birthday;
- public User(){
- System.out.println("user");
- }
- 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 String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public Date getBirthday() {
- return birthday;
- }
- public void setBirthday(Date birthday) {
- this.birthday = birthday;
- }
- @Override
- public Object clone() throws CloneNotSupportedException {
- Class clazz = User.class;
- User user =null;
- try {
- user = (User)clazz.newInstance();
- /*user.setBirthday(this.birthday);
- user.setId(this.id);
- user.setPassword(this.password);
- user.setName(this.name);*/
- Field[] declaredFields = clazz.getDeclaredFields();
- for(Field field :declaredFields){
- Class<?> parameterTypes = field.getType();
- String fieldName = field.getName();
- String methodName = "set"+fieldName.substring(0,1).toUpperCase()+field.getName().substring(1);
- Method method = clazz.getDeclaredMethod(methodName, parameterTypes);
- field.setAccessible(true);
- method.invoke(user,field.get(this));
- }
- return user;
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
- }
(5).user.hbm.xml
- <?xml version="1.0"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping package="cn.lonecloud.domain" >
- <class name="User" table="t_user" select-before-update="false">
- <!--hibernate为我们生成主键id-->
- <id name="id">
- <generator class="uuid" />
- </id>
- <!--默认把类的变量映射为相同名字的表列,当然我们使用column属性修改表字段-->
- <property name="name" column="names"></property>
- <property name="password"></property>
- <property name="birthday" type="date"></property> <!--当为日期类型的时候标明date类型-->
- </class>
- </hibernate-mapping>
6.Customer.java
- package cn.lonecloud.domain;
- import java.io.Serializable;
- import java.util.HashSet;
- import java.util.Set;
- public class Customer implements Serializable {
- private String id;
- private String customerName;
- private Set<Order> orders = new HashSet<Order>();
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- public String getCustomerName() {
- return customerName;
- }
- public void setCustomerName(String customerName) {
- this.customerName = customerName;
- }
- public Set<Order> getOrders() {
- return orders;
- }
- public void setOrders(Set<Order> orders) {
- this.orders = orders;
- }
- }
7.Customer.hbm.xml
- <?xml version="1.0"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping package="cn.lonecloud.domain" >
- <class name="Customer" table="t_customer" lazy="true">
- <!--hibernate为我们生成主键id-->
- <id name="id">
- <generator class="uuid" />
- </id>
- <!--默认把类的变量映射为相同名字的表列,当然我们使用column属性修改表字段-->
- <property name="customerName" column="customerName"></property>
- <set name="orders" lazy="extra" fetch="join" cascade="all-delete-orphan"> <!-- lazy fetch -->
- <key column="customer_id"></key>
- <one-to-many class="cn.lonecloud.domain.Order"/>
- </set>
- </class>
- </hibernate-mapping>
8.Order.java
- package cn.lonecloud.domain;
- import java.io.Serializable;
- public class Order implements Serializable{
- private String id;
- private String orderNumber;
- private float price;
- private Customer customer;
- public Customer getCustomer() {
- return customer;
- }
- public void setCustomer(Customer customer) {
- this.customer = customer;
- }
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- public String getOrderNumber() {
- return orderNumber;
- }
- public void setOrderNumber(String orderNumber) {
- this.orderNumber = orderNumber;
- }
- public float getPrice() {
- return price;
- }
- public void setPrice(float price) {
- this.price = price;
- }
- }
9.Order.hbm.xml
- <?xml version="1.0"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping package="cn.lonecloud.domain" >
- <class name="Order" table="t_order" >
- <!--hibernate为我们生成主键id-->
- <id name="id">
- <generator class="uuid" />
- </id>
- <!--默认把类的变量映射为相同名字的表列,当然我们使用column属性修改表字段-->
- <property name="orderNumber" column="orderNumber"></property>
- <property name="price" column="price"></property>
- <many-to-one name="customer" class="cn.lonecloud.domain.Customer">
- <column name="customer_id"/>
- </many-to-one>
- </class>
- </hibernate-mapping>
Hibernate学习(一)创建数据表的更多相关文章
- oracle的学习 第二节:创建数据表
学习内容: A.创建数据库和表空间 B.创建用户和分配权限 C.创建数据表 一.创建数据库和表空间 (一)SQL语言的基本概念 1.概念 高级的结构化查询语言:沟通数据库服务器和客户的重要桥梁. PL ...
- 学习笔记之--Navicat Premium创建数据表
1.打开Navicat Premium,点击连接,选择MySQL,创建新连接.输入安装MySQL是的用户名和密码.点击确定. 2.admin数据连接已经创建成功.下面为admin新建数据库,输入数据库 ...
- MySQL学习笔记_2_MySQL创建数据表(上)
MySQL创建数据表(上) 一.创建数据表的SQL语句模型[弱类型] CREATETABLE [IF NOT EXISTS] 表名称( 字段名1列的类型[属性][索引], 字段名2 列的类型[属性][ ...
- Mysql学习(慕课学习笔记4)创建数据表、查看数据表、插入记录
创建数据表 Create table [if not exists] table_name(column_name data_type,…….) UNSIGNED 无符号SIGNED 有符号 查看创建 ...
- MySQL学习笔记_4_MySQL创建数据表(下)
MySQL创建数据表(下) 五.数据表类型及存储位置 1.MySQL与大多数数据库不同,MySQL有一个存储引擎概念.MySQL可以针对不同的存储需求选择不同的存储引擎. 2. showengines ...
- MySQL学习笔记_3_MySQL创建数据表(中)
MySQL创建数据表(中) 三.数据字段属性 1.unsigned[无符号] 可以让空间增加一倍 比如可以让-128-127增加到0-255 注意:只能用在数值型字段 2.zerofill[前导零] ...
- 吴裕雄--天生自然MySQL学习笔记:MySQL 创建数据表
创建MySQL数据表需要以下信息: 表名 表字段名 定义每个表字段 语法 以下为创建MySQL数据表的SQL通用语法: CREATE TABLE table_name (column_name col ...
- 【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 ...
- mysql之创建数据库,创建数据表
写在前面 项目中用到mysql数据库,之前也没用过mysql,今天就学下mysql的常用的语法,发现跟sql server的语法极其相似.用起来还是蛮简单的. 一个例子 1.创建一个名为School的 ...
- SpringBoot+Mybatis 自动创建数据表(适用mysql)
Mybatis用了快两年了,在我手上的发展史大概是这样的 第一个阶段 利用Mybatis-Generator自动生成实体类.DAO接口和Mapping映射文件.那时候觉得这个特别好用,大概的过程是这样 ...
随机推荐
- shell 实现主板测试
初接触shell,只能需要用到什么功能现学先用了.本文总结一下完成测试程序当中遇到的技巧和问题. 01. 变量生存期的问题,在函数中的变量无法在其他地方使用,在函数中只能使用在函数前定义的全局变量: ...
- java.lang.ClassNotFoundException: com.radiadesign.catalina.session.RedisSessionHandlerValve
org.apache.tomcat.util.digester.Digester.startElement Begin event threw exception java.lang.ClassNot ...
- BSA Network Shell系列-nlogin命令
nlogin 1 说明 nlogin 是一种通过RSCD Agent的通信的安全远程登录,使用和NSH工具相同的加密协议.可以作为telnet.rlogin或者ssh的替代工具(假如这些端口或协议禁用 ...
- 用Python实现几种排序算法
#coding=utf-8 # 1 快速排序算法 def qksort(list): if len(list)<=1: return list else: pivot = list[0] les ...
- rem与@media 的优缺点
首先: 如果我们在做单独移动端网站或者app的时候 我建议 使用 rem ; 他能让我们在手机各个机型的适配方面:大大减少我们代码的重复性,是我们的代码更兼容. 下面两个图一个调试在常用的机 ...
- Mysql高可用架构(主从同步)
做高可用的优势 1.成本低 2.解决单点故障 3.不容易遇到性能瓶颈 一 .Mysql主从同步架构搭建案例 优点如下:·在业务繁忙阶段,在从服务器上可以执行查询工作(即我们常说的读写分离),降低主服务 ...
- typedef和#define的简单比较
1.通常说typedef比#define要好,尤其在有指针的情况下 typedef char* pStr1; #define pStr2 char* pStr1 s1,s2; pStr2 s3,s4; ...
- JAVA List根据字段排序以及取前几条数据
1.经常会遇到对组装的list排序或提取list中前几条数据,例如: 根据时间排序: list.sort((o1, o2) -> o2.getCreateTime().compareTo(o1. ...
- 在线生成PDF的网站-HTML 转 PDF 在线
http://pdf.df5d.com/ (服务器问题,演示暂停了,但是 下面介绍的组件还是可以使用的) 将前面用到的wkhtmltopdf用一个服务器程序集成在一起,接受一个URL参数,在生成一 ...
- 备忘:Junit单元测试
junit 目前测试都是在main方法中调用目前的结果都需要人工对比是否是想要的 1.使用Junit测试方法,绿色条条代表方法测试成功,没有bug,如果是红色条条代表有异常,测试不通过2.点击方法名. ...