IDEA中使用hibernate连接sqlserver
使用IDEA建立的hibernate工程项目是普通的JavaWeb项目
User.java
package com.mengma.domain;
public class User {
private Integer id; // 唯一标识id
private String name; // 姓名
private Integer age; // 年龄
private String gender; // 性别
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public User(Integer id, String name, Integer age, String gender) {
this.id = id;
this.name = name;
this.age = age;
this.gender = gender;
}
public User() {
}
}
User.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- name代表的是类名,table代表的是表名 -->
<class name="com.mengma.domain.User" table="users">
<!-- name代表的是User类中的id属性,column代表的是user表中的主键id -->
<id name="id" column="id">
<!-- 主键生成策略 -->
<generator class="native" />
</id>
<!-- 其他属性使用property标签映射 -->
<property name="name" type="java.lang.String" column="name"/>
<property name="age" type="integer" column="age" />
<property name="gender" type="java.lang.String" column="gender" />
</class>
</hibernate-mapping>
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 指定方言 -->
<!--配置数据库连接属性-->
<property name="dialect">
<!-- org.hibernate.dialect.MySQL5Dialect-->
org.hibernate.dialect.SQLServerDialect
</property>
<!-- 链接数据库url -->
<property name="connection.url">
<!-- <![CDATA[jdbc:mysql://localhost:3306/hibernate?useUnicode=true&characterEncoding=utf-8]]>-->
jdbc:sqlserver://localhost:1433;databaseName=hibernate
</property>
<!-- 连接数据库的用户名 -->
<property name="connection.username">
sa
</property>
<!-- 数据库的密码 -->
<property name="connection.password">
123456
</property>
<!-- 数据库驱动 -->
<property name="connection.driver_class">
com.microsoft.sqlserver.jdbc.SQLServerDriver
</property>
<!-- 在控制台显示sql语句 -->
<property name="show_sql">
true
</property>
<!-- 格式化sql语句 -->
<property name="format_sql">true</property>
<!-- 映射文件配置 -->
<mapping resource="com/mengma/domain/User.hbm.xml" />
</session-factory>
</hibernate-configuration>
log4j.properties`
# For Testing Guys
# Set root logger level to error
log4j.rootLogger=INFO, Console
###### Console appender definition #######
# All outputs currently set to be a ConsoleAppender.
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{
ABSOLUTE} %-5p [%c{
3}] %m%n
#log4j.appender.Console.layout.ConversionPattern=%d{
ABSOLUTE} %-5p [%c] %m%n
###### File appender definition #######
log4j.appender.File=org.apache.log4j.DailyRollingFileAppender
log4j.appender.File.File=spring.log
log4j.appender.File.Append=false
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=%d{
ABSOLUTE} %-5p [%c] %m%n
log4j.rootLogger=debug, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=firestorm.log
log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
log4j.logger.com.codefutures=DEBUG
IDEA中Hibernate实现增删改查功能
UserTest.java
package com.mengma.test;
import org.hibernate.*;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Restrictions;
import org.junit.Test;
import com.mengma.domain.User;
import java.util.List;
public class UserTest {
// 添加操作
@Test
public void testInsert() {
// 1.创建Configuration对象并加载hibernate.cfg.xml配置文件
Configuration config = new Configuration().configure();
// 2.获取SessionFactory
SessionFactory sessionFactory = config.buildSessionFactory();
// 3.得到一个Session
Session session = sessionFactory.openSession();
// 4.开启事务
Transaction transaction = session.beginTransaction();
// 5.执行持久化操作
//通过实例化的对象向数据库添加新记录
User user = new User();
user.setName("zhangsan");
user.setAge(21);
user.setGender("男");
// 将对象保存到表中
//增save()方法,更新update()方法,更新时以主键映射的属性为条件
//删除User user = (User) session.get(User.class, 1);session.delete(user);
session.save(user);
// 6.提交事务
transaction.commit();
// 7.关闭资源
session.close();
sessionFactory.close();
}
// 查询操作
@Test
public void findByIdTest() {
// 1.创建Configuration对象并加载hibernate.cfg.xml配置文件
Configuration config = new Configuration().configure();
// 2.获取SessionFactory
SessionFactory sessionFactory = config.buildSessionFactory();
// 3.得到一个Session
Session session = sessionFactory.openSession();
// 4.开启事务
Transaction transaction = session.beginTransaction();
// 5.执行持久化操作
// session.get()只能通过主键来查询的//
// User user = (User) session.get(User.class, 4);
// System.out.println(user.getId() + "" + user.getName() + ""
// + user.getAge() + "" + user.getGender());
// 根据其他属性查询(可用于实例化多个对象)
// Criteria criteria = session.createCriteria(User.class);
// criteria.add(Restrictions.eq("name", "zhangsan"));
// @SuppressWarnings("unchecked")
// List<User> list = criteria.list();
// for(User b:list){
// System.out.println(b); // 调用User类中的toString()方法
// }
// 查询类对应表的所有记录(可用于实例化多个对象)
String hql="from User";
Query query = session.createQuery(hql);
@SuppressWarnings("unchecked")
List<User> list2 = query.list();
for(User b:list2){
System.out.println(b); // 调用User类中的toString()方法
}
// 6.提交事务
transaction.commit();
// 7.关闭资源
session.close();
sessionFactory.close();
}
// 修改操作
@Test
public void testUpdate() {
// 1.创建Configuration对象并加载hibernate.cfg.xml配置文件
Configuration config = new Configuration().configure();
// 2.获取SessionFactory
SessionFactory sessionFactory = config.buildSessionFactory();
// 3.得到一个Session
Session session = sessionFactory.openSession();
// 4.开启事务
Transaction transaction = session.beginTransaction();
// 5.执行持久化操作
User user = new User();
user.setId(1);
user.setName("zhangsan");
user.setAge(19);
user.setGender("男");
// 更新数据
session.update(user);
// 6.提交事务
transaction.commit();
// 7.关闭资源
session.close();
sessionFactory.close();
}
// 删除
@Test
public void deletByIdTest(){
// 1.创建Configuration对象并加载hibernate.cfg.xml配置文件
Configuration config = new Configuration().configure();
// 2.获取SessionFactory
SessionFactory sessionFactory = config.buildSessionFactory();
// 3.得到一个Session
Session session = sessionFactory.openSession();
// 4.开启事务
Transaction transaction = session.beginTransaction();
// 5.执行持久化操作
User user = (User) session.get(User.class, 1);
session.delete(user);
// 6.提交事务
transaction.commit();
// 7.关闭资源
session.close();
sessionFactory.close();
}
}
可以根据其他属性查询(可用于实例化多个对象)
jar包