hibernate.cfg.xml里可以设置一个值显示更详细的sql语句:

<property name="format_sql">true</property>
  • 表明和类名不同的时候, 需要对表名进行配置

Annotation的情况:

1. Teacher.java  , 加@Table(name="--")

@Entity
@Table(name="_Teacher")

运行 junit自动生成 _teacher这个表

XML的情况:

1. 修改配置文件Student.hbm.xml:

<class name="Student" table="_student">

StudentTest.java, 内容如下:

package com.bjsxt.hibernate.model;

import static org.junit.Assert.*;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test; public class StudentTest {
private static SessionFactory sf=null;
@BeforeClass
public static void beforeClass(){
sf=new AnnotationConfiguration().configure().buildSessionFactory();
}
@Test
public void testStudentSave() {
Student s =new Student();
s.setId(4);
s.setName("wdfd");
s.setAge(30); Session session = sf.openSession();
session.beginTransaction();
session.save(s);
session.getTransaction().commit();
session.close();
sf.close();
}
@AfterClass
public static void afterClass(){
sf.close();
} }
  • 如果是字段名和属性名不同的话:

Annotation方式:

1. 在Teacher.java里加入如下信息 @Column(name="--")

@Column(name="_name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

XML方式:

1. 修改配置文件Student.hbm.xml:

<property name="name" column="_name"/>

  

  • 如果类里有个属性不想存在数据库里

Annotation方式: 在类里 该属性get方法之前 加@Transient

XML方式:  直接不写

  • 映射日期与时间类型

Annotation方式:

1. 在类里 添加一个Date类型属性,并生成get set方法:

private Date birthDate;

	public Date getBirthDate() {
return birthDate;
}
public void setBirthDate(Date birthDate) {
this.birthDate = birthDate;
}

2. 在TeacherTest里写入一行:

t.setBirthDate(new Date());

结果:  2016-04-19 16:15:54

我们只想要年月日, 只需要加入@Temporal(TemporalType.DATE)

XML方式:  指定type, 很麻烦

  • 映射枚举类型:

Annotation方式: @Enumerated(EnumType.STRING)

1. 在Teacher.java同目录下新建一个Enum: Zhicheng.java, 内容如下:

package com.bjsxt.hibernate.model;

public enum Zhicheng {
A,B,C
}

2. 在 Teacher.java里加入字段:

private Zhicheng zc;
@Enumerated(EnumType.STRING)
public Zhicheng getZc() {
return zc;
}
public void setZc(Zhicheng zc) {
this.zc = zc;
}

3. 在TeacherTest.Java里加入:

t.setZc(Zhicheng.A);

运行出来的_teacher表里有个zc, 值为A

如果用 @Enumerated(EnumType.STRING) , zc的值为0.

junit有个bug, 就是在@beforeclass里出现异常的时候错误不会报出来, 会吞掉,

解决方法1: @beforeclass加try..catch.

解决方法2:在test方法里写个main方法,调用beforeClass()方法.

Hibernate---基础配置的更多相关文章

  1. Hibernate学习笔记2.1(Hibernate基础配置)

    Hibernate基础配置 1.<property name="hbm2ddl.auto">update</property> 在SessionFactor ...

  2. Hibernate 基础配置及常用功能(三)

    本章重点讲述Hibernate对象的三种状态以及如何配置二级缓存 有关Hibernate的三种状态如何相互转换网上都能查到,官方文档描述的也比较详细.这里主要是针对几个重点方法做代码演示. 一.状态转 ...

  3. Hibernate 基础配置及常用功能(一)

    本来是想等全部框架测试完以后再统一发布的,但是随着测试的一点点增加感觉把需要叙述的东西放在一起终将会是一场灾难.所以还是打算分成几章来描述,其中还包括一些有待解决的问题.短期很难腾出时间来仔细阅读Hi ...

  4. Hibernate 基础配置及常用功能(二)

    本章主要是描述几种经典映射关系,顺带比较Hibernate4.x和Hibernate5.x之间的区别. 一.建立测试工程目录 有关实体类之间的相互映射关系,Hibernate官方文档其实描述的非常详细 ...

  5. hibernate基础配置

    数据库表名和类名 一致 注解:可写可不写: XML:可写可不写: <class name="Student"> 不一致 注解:  public class Teache ...

  6. 3.Hibernate基础配置

    1.Hibernate.cfg.xml:hbm2ddl.auto 在SessionFactory创建时,自动检查数据库结构,或者将数据库schema的DDL导出到数据库 <property na ...

  7. Hibernate学习笔记2.3(Hibernate基础配置)

    映射,注释可以放在成员变量上面,也可以放在get方法上面 写在成员变量的话 破坏了java的面向对象思维 直接让hibernate访问内部的私有元素 要是能直接设指不合适哈哈 所以主张写在get方法上 ...

  8. Hibernate游记——装备篇《二》(基础配置示例)

    <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hi ...

  9. Java进阶知识03 Hibernate的基础配置详解

    1.Hibernate的原理/流程步骤 1.通过Configuration().configure(); 读取并解析hibernate.cfg.xml配置文件,并创建一个configuration对象 ...

  10. hibernate学习笔记(1)基础配置与jar包

    下载hibernate基础jar包,并解压hibernate-core-4.2.4.final 在myeclipse中添加hibernate的dtd支持: location为D:\学习\imooc-h ...

随机推荐

  1. Qt之打包发布(NSIS详解)

    来源:http://blog.sina.com.cn/s/blog_a6fb6cc90101fer8.html 发布方式    Qt发布的时候,通常使用两种方式:   (1)静态编译  (2)动态编译 ...

  2. MyBatis 返回新增数据的自增id

    <insert id="save" parameterType="Vote" useGeneratedKeys="true" keyP ...

  3. vi命令的常用操作

    G:移动到底部 进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件, ...

  4. POJ 3468<线段树,区间add>

    题目连接 //位运算 k<<1 相当于 k*2 k<<1|1 相当于 k*2+1 /* 修改区间内的值,并且维护区间和. 详见代码 */ #include<cstdio& ...

  5. 小蚂蚁搬家<贪心>

    题意: 由于预知未来可能会下雨,所以小蚂蚁决定搬家.它需要将它的所有物品都搬到新家,新家的体积为V,小蚂蚁有N件物品需要搬,每件物品的体积为Ai,但他发现:每件物品需要新家剩余体积大于等于Bi才能使它 ...

  6. mysql 初始化时root无密码

    修改密码 update user set password=PASSWORD('123456') where User='root'; 添加用户设置权限 grant select,insert,upd ...

  7. 直接在script里面换样式IE6,7,8不兼容

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  8. ACM暑期训练总结

    ACM暑期集训总结报告 不知不觉,ACM暑期集训已经过去了一个月了(其实我还差几天才够一个月,因为最后几天要回家办助学贷款,所以没坚持到最后,当了个逃兵.....[汗])也到了结束的时候.在这一个月中 ...

  9. FlashDevelop调试Air出错

    按下F5调试命令行窗口出现错误: Starting AIR Debug Launcher... invalid application descriptor: Unknown namespace: h ...

  10. java.lang.IllegalArgumentException: Can't convert argument: null

    出现这样的异常:: 这是由于eclipse在修改项目名的时候,eclipse自动更新部署了web.xml文件 并且重新生成了xml文件的头部声明. 新增了java的命名把这个javaee去掉就可以了. ...