如何使用JAX在Java中使用Web Service从数据库插入数据库中的数据-RS

如何使用JAX在Java中使用Web Service从数据库插入数据库中的数据-RS,第1张

如何使用JAX在Java中使用Web Service从数据库插入数据库中的数据-RS

下面是一个示例 JAX-RS 服务的示例,该示例使用 JPA 进行持久性而使用 JAXB 进行消息传递,实现为会话Bean 。

客户服务

package org.example;import java.util.List;import javax.ejb.*;import javax.persistence.*;import javax.ws.rs.*;import javax.ws.rs.core.MediaType;@Stateless@LocalBean@Path("/customers")public class CustomerService {    @PersistenceContext(unitName="CustomerService",  type=PersistenceContextType.TRANSACTION)    EntityManager entityManager;    @POST    @Consumes(MediaType.APPLICATION_XML)    public void create(Customer customer) {        entityManager.persist(customer);    }    @GET    @Produces(MediaType.APPLICATION_XML)    @Path("{id}")    public Customer read(@PathParam("id") long id) {        return entityManager.find(Customer.class, id);    }    @PUT    @Consumes(MediaType.APPLICATION_XML)    public void update(Customer customer) {        entityManager.merge(customer);    }    @DELETE    @Path("{id}")    public void delete(@PathParam("id") long id) {        Customer customer = read(id);        if(null != customer) { entityManager.remove(customer);        }    }    @GET    @Produces(MediaType.APPLICATION_XML)    @Path("findCustomersByCity/{city}")    public List<Customer> findCustomersByCity(@PathParam("city") String city) {        Query query = entityManager.createNamedQuery("findCustomersByCity");        query.setParameter("city", city);        return query.getResultList();    }}

顾客

以下是其中一个实体的示例。它包含JPA和JAXB批注。

package org.example;import java.io.Serializable;import javax.persistence.*;import javax.xml.bind.annotation.XmlRootElement;import java.util.Set;@Entity@NamedQuery(name = "findCustomersByCity", query = "SELECT c " +         "FROM Customer c " +         "WHERe c.address.city = :city")@XmlRootElementpublic class Customer implements Serializable {    private static final long serialVersionUID = 1L;    @Id    private long id;    @Column(name="FIRST_NAME")    private String firstName;    @Column(name="LAST_NAME")    private String lastName;    @oneToOne(mappedBy="customer", cascade={CascadeType.ALL})    private Address address;    @oneToMany(mappedBy="customer", cascade={CascadeType.ALL})    private Set<PhoneNumber> phoneNumbers;}

更新

需要什么jar

您可以将JAX-RS / EJB / JPA / JAXB应用程序部署到任何符合Java EE
6的应用程序服务器,而无需设置任何其他服务器。对客户端进行编程,您可以从Jersey(http://jersey.java.net/)获得JAX-
RS API
,并从Eclipselink(http://www.eclipse.org/eclipselink/)获得JPA和JAXB
API 。


以及数据库连接的写入位置

JDBC资源和连接池

您需要在应用程序服务器上配置连接池。以下是在GlassFish上执行此 *** 作的步骤。步骤将因所使用的应用程序服务器而异。

  1. 将JDBC驱动程序(ojdbc14.jar)复制到/ glashfish / lib
  2. 启动管理控制台
  3. 创建一个连接池:
    1. 名称=客户服务
    2. 资源类型=’javax.sql.ConnectionPoolDataSource’
    3. 数据库供应商= Oracle(或适合您数据库的任何数据库供应商)
    4. 单击下一步,然后填写以下“其他属性”:
    5. 用户(例如CustomerService)
    6. 密码(例如密码)
    7. 网址(例如jdbc:oracle:thin:@localhost:1521:XE)
    8. 使用“ Ping”按钮测试您的数据库连接
  4. 创建一个名为“ CustomerService”的JDBC资源
    1. JNDI名称= CustomerService
    2. 池名称= CustomerService(您在上一步中创建的连接池的名称)

JPA配置

然后,我们参考上面在

persistence.xml
文件中为JPA实体创建的数据库连接,如下所示:

<?xml version="1.0" encoding="UTF-8"?><persistence version="1.0"    xmlns="http://java.sun.com/xml/ns/persistence"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">    <persistence-unit name="CustomerService" transaction-type="JTA">        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>        <jta-data-source>CustomerService</jta-data-source>        <class>org.example.Customer</class>        <class>org.example.Address</class>        <class>org.example.PhoneNumber</class>        <properties> <property name="eclipselink.target-database" value="Oracle" /> <property name="eclipselink.logging.level" value="FINEST" /> <property name="eclipselink.logging.level.ejb_or_metadata" value="WARNING" /> <property name="eclipselink.logging.timestamp" value="false"/> <property name="eclipselink.logging.thread" value="false"/> <property name="eclipselink.logging.session" value="false"/> <property name="eclipselink.logging.exceptions" value="false"/>  <property name="eclipselink.target-server" value="SunAS9"/>         </properties>    </persistence-unit></persistence>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5009949.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存