java ee6 with scala

15
Java EE 6 with Scala @megascus

Upload: satoshi-kubo

Post on 29-Nov-2014

1.445 views

Category:

Technology


16 download

DESCRIPTION

#wlstudy #glassfishjp

TRANSCRIPT

Page 1: Java ee6 with scala

Java EE 6 with Scala@megascus

Page 2: Java ee6 with scala

• twitter id: @megascus

•仕事では銀行常駐してC#な案件やってます。

• Java EE Advent Calendarぜひ見て下さい!

http://atnd.org/events/33783

自己紹介

Page 3: Java ee6 with scala

Java以外でJava EE 6

Page 4: Java ee6 with scala

Scalaってなんだ

Object指向型言語と関数型言語を統合した言語で最近注目されている。 Twitter社も採用。

Page 5: Java ee6 with scala

実際のコード

Page 6: Java ee6 with scala

Entity(Java)

@Entity public class EntityClass implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id;

public Long getId() { return id; }

public void setId(Long id) { this.id = id; } }

Page 7: Java ee6 with scala

Entity(Scala)

@Entity @serializable class EntityClass { @Id @GeneratedValue (strategy = GenerationType.AUTO) @BeanProperty // GetterとSetterの自動生成 var id: Long = _ }

Page 8: Java ee6 with scala

EJB(Java)

@Stateless @LocalBean public class CrudEJB {

@PersistenceContext(unitName = "default") protected EntityManager manager;

public EntityClass create(EntityClass entity) { manager.persist(entity); return entity; }

public List<EntityClass> readAll() { return manager.createNamedQuery("findAll").getResultList(); }

public EntityClass read(Long id) { return manager.find(EntityClass.class, id); }

public EntityClass update(EntityClass entity) { return manager.merge(entity); }

public void delete(EntityClass entity) { manager.remove(entity); } }

Page 9: Java ee6 with scala

EJB(Scala)

@Stateless @LocalBean class CrudEJB { @PersistenceContext(unitName="default") protected var manager: EntityManager = _ def create(entity: EntityClass): EntityClass = { manager persist entity entity } def readAll()(entity: EntityClass) = manager createNamedQuery ("findAll") getResultList def read(id: Long) = manager find classOf[EntityClass] id def update(entity: EntityClass) = manager merge entity def delete(entity: EntityClass): Unit = manager remove entity }

Page 10: Java ee6 with scala

Build

今回はMavenを使うので

pom.xmlに設定を追記していきます。

Page 11: Java ee6 with scala

repository

<repositories> <repository> <id>scala-tools.org</id> <name>Scala-tools Maven2 Repository</name> <url>http://scala-tools.org/repo-releases</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>scala-tools.org</id> <name>Scala-tools Maven2 Repository</name> <url>http://scala-tools.org/repo-releases</url> </pluginRepository> </pluginRepositories>

Page 12: Java ee6 with scala

dependency

<dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> <version>2.9.2</version> </dependency>

Page 13: Java ee6 with scala

plugin

<plugin> <groupId>org.scala-tools</groupId> <artifactId>maven-scala-plugin</artifactId> <version>2.15.2</version> <executions> <execution> <goals> <goal>compile</goal> </goals> </execution> </executions> </plugin>

Page 14: Java ee6 with scala

フォルダ構成

.├ pom.xml└ src └ main   ├ java    ├ resources   │ └ META-INF    ├ scala //ここにScalaのソースを入れていく    └ webapp

Page 15: Java ee6 with scala

ソースコード

• https://github.com/megascus/JavaEE6Scala