Quantcast
Channel: normalian blog
Viewing all articles
Browse latest Browse all 237

Windows Azure 上の WebLogic Server から JPA で SQL Database に接続する

$
0
0

本日は Windows Azure Advent Calendar9日目の記事だ。
WebLogic Server を Windows Azure上で利用するための情報をまとめて来たが、今回は WebLogic Server から SQL Database に JPAJavaEE標準の O/R マッパー)を利用して接続する手順もまとめた。以下の記事を未参照の方は、まずは以下の記事を通読して欲しい。

今回紹介する内容は、上記の記事を利用して構築した環境が必須となる点に注意頂きたい。

WebLogic Server で SQL Database を設定するためのアレコレ

ざっくりとは以下の手順が必要となる。

上記をスライドにまとめたので参照して欲しい。

EAR アプリの開発

上記だけではソースコード部分が分かりにくいところもあると思うので、以下に実際に利用したソースコードを記載する。

WAR側のコード
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"	xmlns:ui="http://java.sun.com/jsf/facelets"	xmlns:h="http://java.sun.com/jsf/html"	xmlns:f="http://java.sun.com/jsf/core"><f:loadBundle basename="resources.application" var="msg" /><head><title><h:outputText value="#{msg.welcomeTitle}" /></title></head><body><h3><h:outputText value="#{msg.welcomeHeading}" /></h3><p><h:outputText value="#{msg.welcomeMessage}" /></p><h:form><h:dataTable value="#{viewDto.erogeList}" var="eroge"border="1"><h:column><f:facet name="タイトル"></f:facet><h:outputText value="#{eroge.name}" /></h:column><h:column><f:facet name="価格"></f:facet><h:outputText value="#{eroge.price}円" /></h:column><h:column><f:facet name="コメント"></f:facet><h:outputText value="#{eroge.comment}" /></h:column></h:dataTable><h:commandButton action="#{indexAction.doAction()}"value="アクション実行" /></h:form></body></html>
package org.mydomain.action;

import javax.inject.Inject;
import javax.inject.Named;

import org.mydomain.dto.ViewDto;
import org.mydomain.logic.IndexLogic;

@Namedpublicclass IndexAction {

	@Inject
	IndexLogic indexLogic;

	@Inject
	ViewDto viewDto;

	public String doAction() {
		String result = "0";
		System.out.println("!!!! do action");
		viewDto.setErogeList(indexLogic.doLogic());
		return result;
	}
}
package org.mydomain.dto;

import java.io.Serializable;
import java.util.List;

import javax.enterprise.context.ConversationScoped;
import javax.inject.Named;

import org.mydomain.entity.Eroge;

@Named@ConversationScopedpublicclass ViewDto implements Serializable {
	private List<Eroge> erogeList;

	public List<Eroge> getErogeList() {
		return erogeList;
	}

	publicvoid setErogeList(List<Eroge> erogeList) {
		this.erogeList = erogeList;
	}
}
EJB側のコード
  • META-INF/persistence.xml
<?xml version="1.0" encoding="UTF-8"?><persistence 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"version="1.0"><persistence-unit name="em"transaction-type="JTA"><provider>org.eclipse.persistence.jpa.PersistenceProvider</provider><jta-data-source>JDBC_Data_Source</jta-data-source></persistence-unit></persistence>
package org.mydomain.logic;

import java.util.List;

import javax.ejb.Stateless;
import javax.inject.Named;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.mydomain.entity.Eroge;

@Named@Statelesspublicclass IndexLogic {

	@PersistenceContextprivate EntityManager em;

	public List<Eroge> doLogic() {
		System.out.println("!!!! do logic");
		List<Eroge> resultList = em.createQuery("select k from Eroge k",
				Eroge.class).getResultList();
		return resultList;
	}
}
package org.mydomain.entity;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity@Table(schema = "dbo", name = "Eroge")
publicclass Eroge implements Serializable {
	@Id@Column(name = "Id")
	privateint id;

	@Column(name = "Price")
	privateint price;

	@Column(name = "Name")
	private String name;

	publicint getPrice() {
		return price;
	}

	publicvoid setPrice(int price) {
		this.price = price;
	}

	publicint getId() {
		return id;
	}

	publicvoid setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	publicvoid setName(String name) {
		this.name = name;
	}

	public String getComment() {
		return comment;
	}

	publicvoid setComment(String comment) {
		this.comment = comment;
	}

	@Column(name = "Comment")
	private String comment;
}

上記を追記したアプリケーションを実際に実行させると以下の実行結果となる。


Viewing all articles
Browse latest Browse all 237

Trending Articles