SSH-Hibernate常见配置1

来源:互联网 发布:头条科技工作 知乎 编辑:程序博客网 时间:2024/06/13 04:10

一、CRM
1.CRM:stuomerstuRelationshipstuManagementstu客户关系管理。是利用相应的信息技术以及互联网技术来协调企业与顾客之间的在销售、营销和服务上的交互,向客户提供创新式的个性化客户交互和服务的过程。其最终目的是将面向客户的各项信息和活动集成起来,组建一个以客户为中心的企业,实现对面向客户的活动的全面管理。
2.功能模块:
1.客户信息管理:对客户信息的统一维护。客户是指存量客户或拟营销的客户,通过员工录入的形式形成公司的“客户库”,是公司最重要的数据资源。
2.联系人管理:对客户的联系人信息统一管理。
3.客户拜访管理:客户拜访信息记录了业务员与客户沟通的过程中的不足、采取的策略不当、有待改进、或者值得推荐的地方。
4.综合查询:客户相关信息查询
5.统计分析:按分类统计客户信息
6.系统管理:系统管理数据crm系统的基础功能模块。包括:数据字典、账户管理、角色管理、权限管理、操作日志管理等。
二、Hibernate
1.Hibernate:该框架是当前主流的Java持久层框架之一。stu即一个持久层的ORM框架。
Hibernate是一个开放源代码的ORM(ObjectstuRelationalstuMappingstu,对象关系映射)框架,对JDBC进行了轻量级的对象封装,使得Java开发人员可以使用面向对象的编程思想来操控数据库。
Hibernate是一个全自动的ORM框架,可以自动生成SQL语句,自动执行。可以应用在任何JDBC的场合。stu
stu 2.Hibernate优点:
1.Hibernate对JDBC访问数据库的代码做了轻量级封装。大大简化了数据访问层繁琐的重复性代码,并且减少了内存消耗,加快了运行效率。
2.Hibernate是一个基于JDBC的主流持久化框架。是一个优秀的ORM实现。很大程度上的简化了DAO层编码工作。
3.Hibernate的性能非常好,映射的灵活性很出色,支持很多关系型数据库,从一对一到多对多的各种复杂关系。
4.可扩展性强。由于源代码的开源以及API的开放,它本身功能不够用时,可以自行编码进行扩展。
三、Hibernate映射文件的基础编写

<?xmlstuversion="1.0"stuencoding="UTF-8"?>
<!DOCTYPEstuhibernate-mappingstuPUBLICstu
stu"-//Hibernate/HibernatestuMappingstuDTDstu3.0//EN"
stustustustu"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<classstuname="Student"stutable="student">
<idstuname="stuId"stucolumn="stu_id">
<generatorstuclass="native"></generator>
</id>
<propertystuname="stuName"stucolumn="stu_name"></property>
<propertystuname="stuSource"stucolumn="stu_source"></property>
<propertystuname="stuIndustry"stucolumn="stu_industry"></property>
<propertystuname="stuLevel"stucolumn="stu_level"></property>
<propertystuname="stuAddress"stucolumn="stu_address"></property>
<propertystuname="stuPhone"stucolumn="stu_phone"></property>
</class>
</hibernate-mapping>

四、主配置文件的编写

<?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://127.0.0.1:3306/studentInformation</property>        <property name="hibernate.connection.username">root</property>        <property name="hibernate.connection.password">1234</property>        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>        <property name="hibernate.show_sql">true</property>        <property name="hibernate.format_sql">true</property>        <property name="hibernate.hbm2ddl.auto">update</property>        <!-- 映射 -->        <mapping resource="cn/baidu/domain/Student.hbm.xml"/>    </session-factory></hibernate-configuration>

五、Hibernate的使用

        //加载配置文件        Configuration cfg = new Configuration().configure();        //使用配置对象构建session工厂        SessionFactory factory = cfg.buildSessionFactory();        Session session = factory.openSession();        //开启事务        Transaction ta = session.beginTransaction();        //执行保存操作        session.save(c);        //提交事务        ta.commit();        session.close();        factory.close();

六、注意事项
Configuration:
无参默认构造函数:它只能加载类的根路径下的hibernate.properties文件
configure:它默认可以加载类的根路径下的hibernate.cfg.xml。
SessionFactory:
维护着hibernate的二级缓存。
SessionFactory是一个重量级对象,创建会消耗很多资源,且费时。
SessionFactory对象是线程安全的。
Session:
Session它是一个轻量级的对象,创建和销毁不会消耗太多资源。(因为信息都被工厂维护起来了)
Session里面维护着hibernate的一级缓存。
Session对象不是线程安全的。


什么是Hibernate的并发机制?怎么去处理并发问题?
Hibernate并发机制:a、Hibernate的Session对象是非线程安全的,对于单个请求,单个会话,单个的工作单元(即单个事务,单个线程),它通常只使用一次,然后就丢弃。如果一个Session 实例允许共享的话,那些支持并发运行的,例如Http request,session beans将会导致出现资源争用。如果在Http Session中有hibernate的Session的话,就可能会出现同步访问Http Session。只要用户足够快的点击浏览器的“刷新”, 就会导致两个并发运行的线程使用同一个Session。b、多个事务并发访问同一块资源,可能会引发第一类丢失更新,脏读,幻读,不可重复读,第二类丢失更新一系列的问题。

解决方案:设置事务隔离级别。Serializable:串行化。隔离级别最高Repeatable Read:可重复读Read Committed:已提交数据读Read Uncommitted:未提交数据读。隔离级别最差 设置锁:乐观锁和悲观锁。
乐观锁:使用版本号或时间戳来检测更新丢失,在的映射中设置 optimistic-lock=”all”可以在没有版本或者时间戳属性映射的情况下实现 版本检查,此时Hibernate将比较一行记录的每个字段的状态 行级悲观锁:Hibernate总是使用数据库的锁定机制,从不在内存中锁定对象!只要为JDBC连接指定一下隔 离级别,然后让数据库去搞定一切就够了。类LockMode 定义了Hibernate所需的不同的锁定级别:LockMode.UPGRADE,LockMode.UPGRADE_NOWAIT,LockMode.READ;


0 0
原创粉丝点击