inc*_*ate 34
面向JPA的框架(例如Hibernate)不能优雅地适应惯用的Scala应用程序有几个原因:
@JoinTable- > @JoinColumn);PersistentCollections例如Hibernate),就无法将Scala集合映射到关联;我确信有更多的理由.这就是我们启动Circumflex ORM项目的原因.这个纯Scala ORM试图消除经典Java ORM的噩梦.具体来说,您可以使用经典DDL语句以相同的方式定义实体:
class User extends Record[User] {
val name = "name".TEXT.NOT_NULL
val admin = "admin".BOOLEAN.NOT_NULL.DEFAULT('false')
}
object User extends Table[User] {
def byName(n: String): Seq[User] = criteria.add(this.name LIKE n).list
}
// example with foreign keys:
class Account extends Record[Account] {
val accountNumber = "acc_number".BIGINT.NOT_NULL
val user = "user_id".REFERENCES(User).ON_DELETE(CASCADE)
val amount = "amount".NUMERIC(10,2).NOT_NULL
}
object Account extends Table[Account]
Run Code Online (Sandbox Code Playgroud)
如您所见,这些声明比经典的JPA POJO更冗长.但实际上有几个概念组合在一起:
Circumflex ORM唯一缺少的是:
PS我希望这篇文章不会被视为广告.实际上并非如此 - 我试图尽可能客观.
小智 9
我试用了EclipseLink JPA,基本操作对我来说很好.JPA是Java标准,还有其他实现也可以工作(OpenJPA等).下面是Scala中JPA类的示例:
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity { val name = "Users" }
class User {
@Id
@GeneratedValue
var userid:Long = _
var login:String = _
var password:String = _
var firstName:String = _
var lastName:String = _
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14122 次 |
| 最近记录: |