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

北京市保障性住房建设中心网站网站中qq跳转怎么做的

北京市保障性住房建设中心网站,网站中qq跳转怎么做的,计算机论文,在线proxy服务器欢迎回到我们的教程系列“带有Hibernate OGM的NoSQL”#xff01; 感谢Gunnar Morling#xff08; gunnarmorling #xff09;创建了本教程。 在这一部分中#xff0c;您将学习如何在WildFly服务器上运行的Java EE应用程序中使用Hibernate OGM。 使用本教程前面部分已经知道… 欢迎回到我们的教程系列“带有Hibernate OGM的NoSQL” 感谢Gunnar Morling gunnarmorling 创建了本教程。 在这一部分中您将学习如何在WildFly服务器上运行的Java EE应用程序中使用Hibernate OGM。 使用本教程前面部分已经知道的实体模型 我们将构建一个基于REST的小型应用程序来管理加息。 如果您还没有阅读本系列的前两期则可以在这里找到它们 带有Hibernate OGM的NoSQL –第一部分持久化您的第一个实体 带有Hibernate OGM的NoSQL –第二部分查询数据 在下面的内容中您将学习如何准备WildFly以使其与Hibernate OGM一起使用配置JPA持久性单元创建用于访问数据的存储库类以及在这些之上提供REST资源。 在本文中我们将主要关注与持久性相关的方面因此使用REST / JAX-RS的一些基本经验可能会有所帮助。 本教程的完整源代码托管在GitHub上。 准备WildFly WildFly服务器运行时基于JBoss Modules系统。 这提供了一个模块化的类加载环境其中每个库例如Hibernate OGM都是其自己的模块声明了它依赖的其他模块的列表并且仅从那些其他依赖项中“看到”了类。 这种隔离使人们摆脱了可怕的“类路径地狱”。 SourceForge提供了包含Hibernate OGM所有必需模块的ZIP文件。 我们昨天发布的 Hibernate OGM 4.2支持WildFly 9因此请下载hibernate-ogm-modules-wildfly9-4.2.0.Final.zip 。 如果您使用的是WildFly 8请使用Hibernate OGM 4.1并获取hibernate-ogm-modules-wildfly8-4.1.3.Final.zip 。 将与您的WildFly版本相对应的归档文件解压缩到应用程序服务器的modules目录中。 如果您希望原始的WildFly目录保持不变则还可以将Hibernate OGM模块存档解压缩到任何其他文件夹并将其配置为服务器要使用的“模块路径”。 为此请导出以下两个环境变量以匹配您的特定环境 export JBOSS_HOME/path/to/wildfly export JBOSS_MODULEPATH$JBOSS_HOME/modules:/path/to/ogm/modules 如果您正在使用Maven WildFly插件 例如在开发期间启动WildFly则可以通过在POM文件中使用以下插件配置来实现相同的目的 ... plugingroupIdorg.wildfly.plugins/groupIdartifactIdwildfly-maven-plugin/artifactIdversion1.1.0.Alpha1/versionconfigurationjboss-home/path/to/wildfly/jboss-homemodules-path/path/to/ogm/modules/modules-path/configuration /plugin ...设置项目 首先使用“ war”包装类型创建一个新的Maven项目。 将以下内容添加到您的pom.xml中 ... dependencyManagementdependenciesdependencygroupIdorg.hibernate.ogm/groupIdartifactIdhibernate-ogm-bom/artifactIdtypepom/typeversion4.2.0.Final/versionscopeimport/scope/dependency/dependencies /dependencyManagement ... 这样可以确保获得匹配版本的Hibernate OGM模块和任何可选依赖项。 然后将依赖项添加到Java EE 7 API和Hibernate OGM后端模块之一例如Infinispan JBoss的高性能分布式键/值数据网格其他任何诸如hibernate-ogm-mongodb或全新的hibernate -ogm-cassandra模块也可以工作 ... dependenciesdependencygroupIdjavax/groupIdartifactIdjavaee-api/artifactIdversion7.0/versionscopeprovided/scope/dependencydependencygroupIdorg.hibernate.ogm/groupIdartifactIdhibernate-ogm-infinispan/artifactIdscopeprovided/scope/dependency /dependencies ... provided作用域使这些依赖项可用于编译但是阻止将它们添加到生成的WAR文件中。 那是因为Java EE API已经是WildFly的一部分而Hibernate OGM将通过您之前解压缩的模块来贡献。 但是仅将这些模块添加到服务器并不会削减它。 还需要将它们注册为应用程序的模块依赖项。 为此添加具有以下内容的文件src / main / webapp / WEB-INF / jboss-web.xml ?xml version1.0 encodingUTF-8? jboss-deployment-structurexmlnsurn:jboss:deployment-structure:1.2xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancedeploymentdependenciesmodule nameorg.hibernate slotogm servicesimport /module nameorg.hibernate.ogm.infinispan servicesimport /module nameorg.hibernate.search.orm servicesimport //dependencies/deployment /jboss-deployment-structure 这将使Hibernate OGM核心和Infinispan后端以及Hibernate Search可用于您的应用程序。 后者将很快用于运行JP-QL查询。 添加实体类和存储库 有了基本的项目基础结构之后就该添加实体类和存储库类以访问它们了。 实体类型基本上与第1部分中的相同只是现在使用Indexed进行注释以允许它们通过Hibernate Search和Lucene进行查询 Entity Indexed public class Person {IdGeneratedValue(generator uuid)GenericGenerator(name uuid, strategy uuid2)private String id;private String firstName;private String lastName;OneToMany(mappedBy organizer,cascade { CascadeType.PERSIST, CascadeType.MERGE },fetch FetchType.EAGER)private SetHike organizedHikes new HashSet();// constructors, getters and setters... }Entity Indexed public class Hike {IdGeneratedValue(generator uuid)GenericGenerator(name uuid, strategy uuid2)private String id;private String description;private Date date;private BigDecimal difficulty;ManyToOneprivate Person organizer;ElementCollection(fetch FetchType.EAGER)OrderColumn(name sectionNo)private ListHikeSection sections;// constructors, getters and setters... }Embeddable public class HikeSection {private String start;private String end;// constructors, getters and setters... } 为了使用这些实体必须定义一个JPA持久性单元。 为此创建文件src / main / resources / META-INF / persistence.xml ?xml version1.0 encodingutf-8? persistence xmlnshttp://java.sun.com/xml/ns/persistencexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsdversion1.0persistence-unit namehike-PU transaction-typeJTAproviderorg.hibernate.ogm.jpa.HibernateOgmPersistence/providerclassorg.hibernate.ogm.demos.ogm101.part3.model.Person/classclassorg.hibernate.ogm.demos.ogm101.part3.model.Hike/classpropertiesproperty namehibernate.ogm.datastore.provider valueINFINISPAN /property namehibernate.ogm.datastore.database valuehike_db /property namehibernate.ogm.datastore.create_database valuetrue //properties/persistence-unit /persistence 在这里我们定义一个名为“ hike-PU”的持久性单元。 Infinispan是一个完全事务性的数据存储使用JTA作为事务类型可以使持久性单元参与容器管理的事务。 将HibernateOgmPersistence指定为提供程序类将启用Hibernate OGM而不是Hibernate ORM它已为设置后端在这种情况下为INFINISPAN数据库名称等配置了一些属性。 请注意实际上在Java EE容器例如WildFly中运行时实际上不需要在persistence.xml中指定实体类型。 相反它们应该被自动拾取。 使用Hibernate OGM时目前很不幸。 这是一个已知的限制请参阅OGM-828 我们希望尽快解决。 下一步是实现用于访问远足和组织者数据的存储库类。 例如下面显示了PersonRepository类 ApplicationScoped public class PersonRepository {PersistenceContextprivate EntityManager entityManager;public Person create(Person person) {entityManager.persist( person );return person;}public Person get(String id) {return entityManager.find( Person.class, id );}public ListPerson getAll() {return entityManager.createQuery( FROM Person p, Person.class ).getResultList();}public Person save(Person person) {return entityManager.merge( person );}public void remove(Person person) {entityManager.remove( person );for ( Hike hike : person.getOrganizedHikes() ) {hike.setOrganizer( null );}} } 实现很简单 通过ApplicationScoped批注该类被标记为应用程序范围的CDI bean即在应用程序的整个生命周期中都存在该bean的单个实例。 它通过依赖注入获得JPA实体管理器并使用该实体管理器来实现一些简单的CRUD方法创建读取更新删除。 请注意 getAll()方法如何使用JP-QL查询返回所有人员对象。 执行后此查询将转换为等效的Lucene索引查询该查询将通过Hibernate Search运行。 远足资料库看起来非常相似因此为简洁起见在此省略。 您可以在GitHub上找到其源代码 。 公开REST服务 JAX-RS使构建基于REST的Web服务变得轻而易举。 它定义了一个声明式编程模型您可以在其中注释简单的旧Java类以提供HTTP端点的GETPOSTPUT等操作的实现。 深入描述JAX-RS超出了本教程的范围例如如果您想了解更多信息请参考Java EE 7教程 。 让我们以资源类中用于管理人员的一些方法为例 Path(/persons) Produces(application/json) Consumes(application/json) Stateless public class Persons {Injectprivate PersonRepository personRepository;Injectprivate ResourceMapper mapper;Injectprivate UriMapper uris;POSTPath(/)public Response createPerson(PersonDocument request) {Person person personRepository.create( mapper.toPerson( request ) );return Response.created( uris.toUri( person ) ).build();}GETPath(/{id})public Response getPerson(PathParam(id) String id) {Person person personRepository.get( id );if ( person null ) {return Response.status( Status.NOT_FOUND ).build();}else {return Response.ok( mapper.toPersonDocument( person ) ).build();}}GETPath(/)public Response listPersons() { … }PUTPath(/{id})public Response updatePerson(PersonDocument request, PathParam(id) String id) { … }DELETEPath(/{id})public Response deletePerson(PathParam(id) String id) { … } } 的Path Produces和Consumes注释由JAX-RS所定义。 它们将资源方法绑定到特定的URL以期望并创建基于JSON的消息。 GET GET POST GET PUT和DELETE配置每个方法负责哪个HTTP动词。 Stateless注释将此POJO定义为无状态会话Bean。 可以通过基于Inject的依赖项注入来获取诸如PersonRepository的依赖项。 实现会话bean可以使您通过容器进行透明的事务管理。 Persons方法的调用将自动包装在一个事务中并且Hibernate OGM与数据存储区的所有交互都将参与其中。 这意味着您对托管实体所做的任何更改例如通过PersonRepository#create()持久保存新人员或修改从实体管理器中检索到的Person对象都将在方法调用返回后提交到数据存储中。 映射模型 请注意我们的REST服务的方法不会返回并接受托管实体类型本身而是返回特定的传输结构例如PersonDocument public class PersonDocument {private String firstName;private String lastName;private SetURI organizedHikes;// constructors, getters and setters... } 这样做的理由是以URI的形式表示关联的元素 Person#organizedHikes Hike#organizer 这使客户端可以根据需要获取这些链接的资源。 例如对http// myserver / ogm-demo-part3 / hike-manager / persons / 123的GET调用可能返回如下JSON结构 {firstName: Saundra,lastName: Johnson,organizedHikes: [http://myserver/ogm-demo-part3/hike-manager/hikes/456,http://myserver/ogm-demo-part3/hike-manager/hikes/789] } 内部模型例如实体Person 和外部模型例如PersonDocument 之间的映射可能很快成为一项繁琐而枯燥的任务因此需要一些基于工具的支持。 存在用于此工作的几种工具其中大多数使用反射或运行时字节代码生成来在不同模型之间传播状态。 MapStruct寻求另一种方法这是我的一个业余项目并在编译时例如使用Maven或在您的IDE中通过Java注释处理器生成bean映射器实现。 它生成的代码是类型安全的快速的它使用简单的方法调用没有反射并且没有依赖关系。 您只需要使用所需的源和目标类型的映射方法声明Java接口MapStruct就会在编译过程中生成一个实现 Mapper(// allows to obtain the mapper via InjectcomponentModel cdi,// a hand-written mapper class for converting entities to URIs; invoked by the generated// toPersonDocument() implementation for mapping the organizedHikes propertyuses UriMapper.class ) public interface ResourceMapper {PersonDocument toPersonDocument(Person person);ListPersonDocument toPersonDocuments(IterablePerson persons);Mapping(target date, dateFormat yyyy-MM-ddTHH:mm:ss.SSSZ)HikeDocument toHikeDocument(Hike hike);// other mapping methods ... } 然后可以在Persons REST资源中使用生成的实现以从内部模型映射到外部模型反之亦然。 如果您想了解有关此模型映射方法的更多信息请查看GitHub上的完整mapper界面或MapStruct参考文档 。 包起来 在我们的教程系列的这一部分中您学习了如何将Hibernate OGM添加到WildFly应用程序服务器并使用它来访问Infinispan作为小型REST应用程序的数据存储。 WildFly是使用Hibernate OGM的应用程序的绝佳运行时环境因为它提供了现成的大多数必需的构建块例如JPA / Hibernate ORMJTA事务管理等并且紧密集成并可以使用。 我们的模块ZIP可以非常轻松地将Hibernate OGM模块放入组合中而无需每次在您的应用程序中重新部署它们。 有了WildFly Swarm 还支持微服务体系结构样式但是我们将再留一点时间来展示如何将Hibernate OGM与Wildfly Swarm一起使用当前WildFly Swarm仍然缺少JPA支持。 您可以在GitHub上找到该项目的源代码。 要构建项目请运行mvn clean install 它使用Arquillian本身对一个激动人心的主题执行REST服务的集成测试 。 另外Maven WildFly插件可用于启动WildFly实例并通过mvn wildfly:run部署应用程序这非常适合手动测试例如通过curl或wget发送HTTP请求。 如果您有任何疑问请在下面的评论中告诉我们或给我们发送Tweet到Hibernate 。 也欢迎您对本教程的后续部分的希望。 敬请关注 翻译自: https://www.javacodegeeks.com/2015/06/nosql-with-hibernate-ogm-part-three-building-a-rest-application-on-wildfly.html
http://www.zqtcl.cn/news/607230/

相关文章:

  • 青浦区网站建设公司商丘网站建设费用
  • 百度网站是怎么建设的wordpress媒体主题
  • 孝感网站建设xgsh国内比百度好的搜索引擎
  • 阅读网站怎样做网站右侧固定标题怎么做
  • 网站开发多少钱农民wordpress acf破解版
  • 厦门网站建设培训云南最便宜的网站建设
  • 吉安手机网站建设html网页布局
  • wordpress英文文章格式怎样给网站做优化
  • 新网站友链网店托管公司
  • 期末作业制作网站网站上传根目录
  • 新网站不被收录的原因兰州网络seo公司
  • 男生可以做网站编辑工作吗网站域名跟谁买
  • 我市精神文明建设的门户网站做网站需要写代码
  • 新网站推广网站搜索引擎优化的步骤
  • 网站建设20推广公司网站建设推广方案
  • 如何设计酒店网站建设好的交互网站
  • 怎么把自己的网站放到百度上九亭做网站
  • 张家界旅游网站建设网页设计作品欣赏分析
  • 订阅号自定义可以做链接网站不做网站dreamwa
  • 电子商务网站规划的原则做网站的集群方案
  • 山东建设银行怎么招聘网站自己做商城网站
  • 建设网站成本预算网站页面设计尺寸
  • 微官网和微网站首页房产网怎么查到房产
  • 高端服装产品网站建设织梦网站识别
  • 做调像什么网站找活注册网站请签署意见是写无
  • 郑州公司网站设计深圳福田有哪些公司
  • 怎么看网站是谁做的asp企业网站开发技术
  • 传奇手游网站大全9377编辑器wordpress
  • 网站集约化建设意见和建议苏州建设交通招聘信息网站
  • 网站建设优化的技巧衣服定制的app有哪些