hibernate(2)

来源:互联网 发布:深圳市逻辑思维软件 编辑:程序博客网 时间:2024/06/06 09:48
hibernate配置文件的书写:配置文件的名称一定是hibernate.cfg.xml才可以,这样才会被读取到
<hibernate-configuration>
<session-factory>

<!-- 设置数据库的连接信息 -->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>

<!-- 配置驱动程序 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/hibernate117?useUnicode=true&amp;characterEncoding=UTF-8</property>
<property name="connection.username">root</property>
<property name="connection.password">123</property>


<!-- 指定使用c3p0连接池 -->
<property name="hibernate.connection.provider_class">org.hibernate.c3p0.internal.C3P0ConnectionProvider</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.min_size">1</property>

<!-- 检查连接的超时时间,单位毫毛 -->
<property name="hibernate.c3p0.timeout">5000</property>

<!-- 当连接池中连接用完之后,可以设置再次获取的连接数 -->
<property name="hibernate.c3p0.acquire_increment">5</property>


<!-- 设置是否显示SQL语句,以及格式化 -->
<property name="show_sql">true</property>
<property name="format_sql">true</property>


<!-- 设置是否需要同步类的属性名与表中的字段 -->
<property name="hbm2ddl.auto">false</property>


<!-- 告知ORM映射文件的位置 -->
<mapping resource="com/lovo/hibernate/xmls/UserInfoT.hbm.xml" />


</session-factory>
</hibernate-configuration>




在持久成配置相关的映射关系的配置文件:
<hibernate-mapping>
<class name="com.lovo.hibernate.beans.UserInfoT" table="t_user" lazy="true" schema="hibernate117">    //lazy="true" 延迟加载,在需要用到的时候再去获取值
<id name="id" column="id" type="java.lang.Integer">
<generator class="identity"></generator>   
//class="identity"主键生成的方式,identity表示用数据库的生成方式,increment表示框架自己的自增长方式
</id>
<property name="userName" column="user_name" length="20"></property>
<property name="password" column="password" length="32"></property>
</class>
</hibernate-mapping>




获取hibernate的session的方式:
public class HibernateTools {


private static SessionFactory sessionFactory;
private static Configuration cfg = null;
private static ServiceRegistry serviceRegistry;


static{
cfg = new Configuration().configure();//读取hibernate.cfg.xml
serviceRegistry = new StandardServiceRegistryBuilder().applySettings(
cfg.getProperties()).build();
sessionFactory = cfg.buildSessionFactory(serviceRegistry);
}

public static Session getSession(){
return sessionFactory.openSession();
}
}






hibernate中查询语句动态条件的封装方式:
// 第一种方式:直接拼装
String sql = "select * from t_user where user_name like '%" + userName+ "%'";
SQLQuery query = session.createSQLQuery(sql);


// 第二种方式:“:字段”名的方式set拼装
String sql = "select * from t_user where user_name like :name ";
SQLQuery query = session.createSQLQuery(sql);
query.setString("name", "%" + userName + "%");


// 第三种方式:“?”方式set拼装
String sql = "select * from t_user where user_name LIKE ?";
SQLQuery query = session.createSQLQuery(sql);
query.setString(0, "%" + userName + "%");


// 第四种方式:setParameter拼装(可拼装任意类型)
String sql = "select * from t_user where user_name like :userName ";
SQLQuery query = session.createSQLQuery(sql);
query.setParameter("userName", "%" + userName + "%");


// 第五种方式:对象的方式拼装,需要属性名和sql中的“:”后面的名字一样
UserInfoT user = new UserInfoT();
user.setUserName("%" + userName + "%");
String sql = "select * from t_user where user_name like :userName";
SQLQuery query = session.createSQLQuery(sql);
query.setProperties(user);
0 0
原创粉丝点击