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. TextUtils使用

    public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceS ...

  2. Enum 枚举基础

    1 定义一个枚举 enum Weekend { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday } 2 得到每个枚举值 f ...

  3. 动态链接库dll,导入库lib,静态链接库lib

    目前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库(Import Libary,以下简称“导入库” ...

  4. android打成apk

    用的软件是这个 D:\软件备份\adt-bundle-windows-x86_64-20140321\adt-bundle-windows-x86_64-20140321\eclipse file-- ...

  5. haxe 中使用音效

    将wavSound.wav音效文件放到assets/sounds下, 在project.xml加入以下代码: <assets path="assets/sounds" ren ...

  6. Python CGI编程和CGIHTTPServer

    Python2.7 的CGIHTTPServer 可以作为一个简单的HTTP服务器,能够调用cgi脚本 1 在任意目录下创建一个特殊的目录 cgi-bin ,用于存放自己写的脚本(.py或.cgi) ...

  7. JNDI深入浅出

    1.什么是JNDI JNDI(The Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API.命名服务将名称和 ...

  8. Django: 之数据库完美解析

    Python的web矿建有Django.Tornado.Flask等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定,模版引擎.缓存.Session等诸多功能. ...

  9. 禁止root远程登录

    Linux禁止root远程登录 ssh的修改vi /etc/ssh/sshd_config将默认的#PermitRootLogin yes去注释改为PermitRootLogin no service ...

  10. centos dmesg

    linux dmesg命令详解   功能说明:显示开机信息. 语 法:dmesg [-cn][-s ] 补充说明:kernel会将开机信息存储在ring buffer,若是开机时来不及查看信息,可利用 ...