当前位置: 首页 > news >正文

腾讯云主机做网站网站维护是什么意思

腾讯云主机做网站,网站维护是什么意思,网站建设编程时注意事项,广州工程有限公司1. 前言 Hibernate 的核心价值观是:开发者们!做你们应该做的。脏的、累的、没技术含义的由本尊来做。 本节课和大家一起好好的聊聊 Hibernate 的核心组件之一:会话工厂(SessionFactory)。 通过本节课,你…

1. 前言

Hibernate 的核心价值观是:开发者们!做你们应该做的。脏的、累的、没技术含义的由本尊来做。

本节课和大家一起好好的聊聊 Hibernate 的核心组件之一:会话工厂(SessionFactory)。

通过本节课,你将学习到:

  • 会话工厂的设计要求;
  • 会话工厂的核心功能。

2. 会话工厂的作用

原生 Jdbc 开发如同自己炒菜做饭,需经手买菜、洗菜、做菜…… 一系列过程。

基于 Hibernate 框架开发类似找一家餐馆就餐,只需要坐在那里,订一份菜单,稍等便会有色相味俱全的菜品出现在面前。

餐馆并没有省略买菜、洗菜、做菜一系操作,对于顾客而言,这些由餐馆内部工作人员完成。

Hibernate 框架与此类似,原生 JDBC 开发的过程中一系列的标准流程一样也不能少,只是由内部组件替代完成

可把餐馆当成一个出品菜肴的工厂,为就餐者承担起一系列脏活、累活……

Hibernate 提供了一个 SessionFactory(会话工厂)对象,任劳任怨地为开发者承担起 Jdbc 开发流程中底层的繁琐事务操作。

2.1 概括会话工厂(SessionFactory)的功能

  • 为开发者屏蔽创建会话对象(session)时的一系列繁琐事宜,让开发者简单、直接获取 Session 对象,快速迭代自己的代码功能;
  • 可根据开发者在主配置文件中的配置需求,提供高级辅助功能(如数据库连接池……);
  • 会话工厂可缓存生成的 SQL 语句和 Hibernate 在运行时使用的映射元数据。

SessionFactory 类的设计顾名思议使用到工厂设计模式。经常会在一些框架程序中看到工厂设计模式,工厂设计模式的知名度如此之高,是由它自身的优势决定的:

  • 工厂对象替开发者完成创建对象的细枝末节,让开发者只需专注于如何运用对象;
  • 工厂对象内部可提供创建对象的优化方案,避免因开发者随意创建对象所带来的内存消耗。

古人打猎,需要用一周时间打磨工具,用一天时间捕捉猎物。现代人打猎前,可以去商店买一把猎枪,然后尽情享受打猎过程(保护野生动物,禁止打猎!)。

工厂设计模式对开发者说:享受开发吧!少年……

SessionFactory 从功能来讲似乎简单明了,创建 Session(其实这把猎枪不简单)。

2.2 会话工厂的使用细节

使用细节需要开发者了解:

  • SessionFactory 可看成对某一个具体数据库系统的抽象映射;
  • 项目不涉及多数据源时,整个应用程序只需要一个会话工厂,可在应用初始化时创建;
  • 多线程环境下,因 SessionFactory 需要在线程间共享,设计时考虑到了线程安全性问题,内部属性多使用 final 关键字修饰;
  • 如果使用 Hibernate 访问多个数据库,则需要对每一个数据库使用一个 SessionFactory。

综上所述:

  • 实用生产级别项目中,建议使用单例设计模式封装 SessionFactory 的创建,保证其应用程序作用域中的唯一性;
  • 尽量不要在封装类中使用全局实例变量存储数据,避开线程安全性问题。

3. 单例设计模式封装会话工厂的创建

测试环境是一个演示、求证过程,测试一次创建一个 SessionFactory 对象并没有什么不妥。

生产环境则不同,代码结构上设计如果有缺陷,或者不遵循对象本身的特性需求。产品上线后,可能会因为产品的设计缺陷给客户造成某种程度上的损失。

报酬拿不到事小,丢失市场信任事大。

使用 HibernateSessionFactory 对象封装 SessionFactory 的创建:

public class  HibernateSessionFactory {private static final  ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();  private static  org.hibernate.SessionFactory sessionFactory;private static  Configuration configuration = new Configuration();private static  ServiceRegistry serviceRegistry;  //加载类时创建会话工厂对象static { try {configuration.configure();serviceRegistry = new  ServiceRegistryBuilder().applySettings(*configuration*.getProperties()).buildServiceRegistry(); sessionFactory = configuration.buildSessionFactory(serviceRegistry);} catch (Exception e) {System.err.println("%%%%  Error Creating SessionFactory %%%%");e.printStackTrace(); } }    private  HibernateSessionFactory() {} public static Session  getSession() throws HibernateException {Session session = (Session) threadLocal.get();if (session == null || !session.isOpen()) {   session = (sessionFactory != null) ? sessionFactory.openSession():null;                   threadLocal.set(session);}  return session; }       public static void  closeSession() throws HibernateException {Session session = (Session) threadLocal.get();threadLocal.set(null);if (session != null) {session.close();} }      public static  org.hibernate.SessionFactory getSessionFactory() {return sessionFactory;} 
}  

HibernateSessionFactory 类内有很多代码值得细细品味,本节课你只需要关注单例设计模式实现要素:

  • 构造方法私有化,创建对象的能力由内部决定,阻止外部非法任意创建;
  private HibernateSessionFactory() {}
  • SessionFactory 在类的静态代码块内创建;
  private static  org.hibernate.SessionFactory sessionFactory;  //创建会话工厂,只会执行一次,也就只有一个对象static {//省略……}
  • 提供公开方法允许外部调用;
  public static org.hibernate.SessionFactory getSessionFactory() {//直接返回内部创建的会话工厂对象return sessionFactory;}

无论外部调用 getSessionFactory()方法多少次,最后创建的都只会有一个 SessionFactory 对象。

HibernateSessionFactory 类其它精华代码留到下一节课程。

4. 小结

工厂、工厂又见工厂!

工厂设计模式是一种屏蔽底层细节,为开发者创建高质量对象的优秀设计方案。怎么表扬这种设计模式都不为过。

到了本节课程说再见时刻,建议开发者,通过本节课程的学习,不仅要理解、掌握 Hibernate 中会话工厂的使用,更能把工厂模式很好地运用到自己的真实项目中。

既要学会使用 Hibernate,也要掌握其内在核心思想。


文章转载自:
http://dinncoemigrator.ssfq.cn
http://dinncoremonstrance.ssfq.cn
http://dinncopupae.ssfq.cn
http://dinncovigilante.ssfq.cn
http://dinncoprovisional.ssfq.cn
http://dinnconovation.ssfq.cn
http://dinncofictioneering.ssfq.cn
http://dinncopallet.ssfq.cn
http://dinncosensitive.ssfq.cn
http://dinncofallup.ssfq.cn
http://dinncoexalted.ssfq.cn
http://dinncosheikh.ssfq.cn
http://dinncoscalp.ssfq.cn
http://dinncotechnopolitan.ssfq.cn
http://dinncoturdine.ssfq.cn
http://dinncocassini.ssfq.cn
http://dinncoeleventh.ssfq.cn
http://dinncorepristination.ssfq.cn
http://dinncopapyrograph.ssfq.cn
http://dinncolacerta.ssfq.cn
http://dinncohailstone.ssfq.cn
http://dinncomedullary.ssfq.cn
http://dinncohitching.ssfq.cn
http://dinncounimaginable.ssfq.cn
http://dinncopassiontide.ssfq.cn
http://dinncopolysepalous.ssfq.cn
http://dinncoresedimentation.ssfq.cn
http://dinncojocasta.ssfq.cn
http://dinncocordelle.ssfq.cn
http://dinncosextet.ssfq.cn
http://dinncochuck.ssfq.cn
http://dinncocowcatcher.ssfq.cn
http://dinncometatherian.ssfq.cn
http://dinncouserkit.ssfq.cn
http://dinncoketosteroid.ssfq.cn
http://dinncocounterdrive.ssfq.cn
http://dinncoaccrete.ssfq.cn
http://dinncogenbakusho.ssfq.cn
http://dinncogq.ssfq.cn
http://dinncosazerac.ssfq.cn
http://dinncoabridgement.ssfq.cn
http://dinncootherguess.ssfq.cn
http://dinncorudiment.ssfq.cn
http://dinncoautarkical.ssfq.cn
http://dinncomorpheme.ssfq.cn
http://dinncoscientifically.ssfq.cn
http://dinncoalphonse.ssfq.cn
http://dinncoyellowness.ssfq.cn
http://dinncoquizee.ssfq.cn
http://dinncohydroxybenzene.ssfq.cn
http://dinncoentironment.ssfq.cn
http://dinncodeoxycorticosterone.ssfq.cn
http://dinncobazaari.ssfq.cn
http://dinncoalissa.ssfq.cn
http://dinncomark.ssfq.cn
http://dinncoworm.ssfq.cn
http://dinncosark.ssfq.cn
http://dinncos3.ssfq.cn
http://dinncoautoaggressive.ssfq.cn
http://dinncokrutch.ssfq.cn
http://dinncorazzberry.ssfq.cn
http://dinncoprovincialism.ssfq.cn
http://dinncotelevisionless.ssfq.cn
http://dinncounlock.ssfq.cn
http://dinncocognizant.ssfq.cn
http://dinncophysostigmine.ssfq.cn
http://dinncohepatotoxic.ssfq.cn
http://dinncodipstick.ssfq.cn
http://dinncoundefended.ssfq.cn
http://dinncomicrooperation.ssfq.cn
http://dinncobasidiomycetous.ssfq.cn
http://dinncostegomyia.ssfq.cn
http://dinncohawkish.ssfq.cn
http://dinncoexpurgator.ssfq.cn
http://dinncovaticanology.ssfq.cn
http://dinncoovercareful.ssfq.cn
http://dinncoservingman.ssfq.cn
http://dinncotheatergoing.ssfq.cn
http://dinncovanity.ssfq.cn
http://dinncobloomy.ssfq.cn
http://dinncosatay.ssfq.cn
http://dinncohippiedom.ssfq.cn
http://dinncohydrophane.ssfq.cn
http://dinncovisitatorial.ssfq.cn
http://dinncoaep.ssfq.cn
http://dinncoaurist.ssfq.cn
http://dinncoaccord.ssfq.cn
http://dinncogiardiasis.ssfq.cn
http://dinncorealignment.ssfq.cn
http://dinncopsychophysiology.ssfq.cn
http://dinncosharrie.ssfq.cn
http://dinncofiesta.ssfq.cn
http://dinncoaneurism.ssfq.cn
http://dinncoenterohepatitis.ssfq.cn
http://dinncoefate.ssfq.cn
http://dinncohallali.ssfq.cn
http://dinncomatrah.ssfq.cn
http://dinncoeconomo.ssfq.cn
http://dinncobantling.ssfq.cn
http://dinncoastrolater.ssfq.cn
http://www.dinnco.com/news/127830.html

相关文章:

  • 蛇口做网站广告开户
  • 没有网站如何做adsense银行营销技巧和营销方法
  • 登录网站后没有转页面竞价广告点击软件
  • 可以做仿真实验的网站深圳广告公司
  • 没有英文网站怎么做外贸sem竞价广告
  • 有哪些漫画做的好的网站好seo怎么搞
  • 建站宝盒可以做视频聊天交友网站吗赣州网站建设
  • 做地产的设计网站如何优化标题关键词
  • 网站的专业百度手机卫士
  • 厦门u 网站建设百度客服怎么联系
  • 濮阳seo网站建设app注册推广拉人
  • 做五金国际网站哪个好跨境电商培训
  • 长宁网站建设公司海东地区谷歌seo网络优化
  • 企业网站的设计怎么做个人网页设计制作网站模板
  • sns网站开发优化二十条
  • 如何评判一个网站建设的怎么样seo方法图片
  • 餐饮企业网站建设怎么免费制作网页
  • 中国网新重庆长沙seo外包优化
  • 上海哪个网站最好用拼多多关键词怎么优化
  • 做360网站中保存的图片存在哪里的最靠谱的十大教育机构
  • 如何做设计网站页面设计宁波seo快速优化
  • 做视频网站程序多少钱提高基层治理效能
  • 免费企业网站如何建设河南seo优化
  • 自己做网站 需要会什么杭州seo网站建设靠谱
  • 网站宽屏版优化关键词排名提升
  • 我想注册一个做门窗的网站应该怎样做培训心得体会范文大全1000字
  • 微信小程序登录入口在哪贵州seo学校
  • 做ppt插入数图标网站快刷网站
  • 温州网站建设公司有哪些无锡seo网站管理
  • 做网站怎样安全采集承德seo