2015-01-09 2 views
1

Как уже было сказано, не рекомендуется использовать Spring Data или Hibernate на Scala, потому что это не очень хорошо работает с его манипулированием байтовым кодом (и некоторыми несовместимыми интерфейсами).Данные Spring с Scala


Мой вопрос, однако, потому что можно закодировать Scala и Java параллельно с SBT, это хорошая идея, чтобы кодировать свои хранилища и услуги в Java, а затем использовать их в своем коде Scala? Это избавляет от ограничения байтового кода?

Я спрашиваю здесь, потому что я не мог найти никаких ресурсов на этом.

ответ

0

Возможно; вы также можете достичь того же, просто осознавая, как, например, Hibernate хочет взаимодействовать с классами и писать классы scala в том же формате (много @BeanProperty var x: String = _). Но вы обнаружите, что такие классы (написанные на Java или Scala) не очень идиоматичны для использования от scala; при попытке использовать их с библиотеками Scala будут трения, которые лучше адаптированы для использования с неизменяемыми классами case, а не с java beans. Таким образом, вы можете писать системы, используя этот подход, по крайней мере, для переходного периода, но в конечном итоге вам лучше выбрать только одну из scala или java и использовать библиотеку, которая является идиоматичной для вашего предпочтительного языка.

2

Нет проблем с использованием Scala для спящего режима. Вам даже не нужно использовать @BeanProperty. Например:

@Entity 
class Role { 
    @Id @GeneratedValue 
    var id: Long = _ 

    @Index(name="role_name") 
    var name: String = _ 

    var created_at: Date = _ 
    var updated_at: Date = _ 

    @ManyToMany 
    private var sub_role: java.util.Set[Role] = _ 
    def subRoles: Set[Role] = { 
    if (sub_role == null) sub_role = new java.util.HashSet[Role] 
    sub_role 
    } 

    @ManyToMany 
    private var permission: java.util.Set[Permission] = _ 
    def permissions: Set[Permission] = { 
    if (permission == null) permission = new java.util.HashSet[Permission] 
    permission 
    } 
} 

Это пример класса из одного ряда проектов Scala/Hibernate я работал на.

Одна вещь, которую вам нужно использовать для Java, это пользовательские аннотации проверки JSR-303.

+0

Привет @sourcedelica, есть ли у вас больше примеров? Я отказался от использования scala ORM и хочу вернуться к JPA. Я считаю, что spring-data-jpa – Sergey

Смежные вопросы