2009-12-14 6 views
0

Как красный блок выше (предупреждение о том, что это субъективный вопрос и может быть закрыто), на этом не может быть каменного закона, но я не понимаю, почему будет гарантировать закрытие вопроса.Наименования полей (имена теней или имена компаундов)

... Рант в стороне

Я планирую на реализацию Hibernate в моих рамках настойчивости, которая может исправить мою проблему при реализации, но у меня есть DB таблица, которые транслируют в классе и суб-класс (много особенностей и осложнений которые существуют в реальной жизни опущены :)):

//dbo.a with column Name 
class a { 
    public String Name; 
} 

//dbo.b with column Name and a foreign key to dbo.a 
class b extends a { 
    public String Name; 
} 

Итак, для того, что должно быть сделано, и почему:

Shadowing:
я мог оставить их как есть, что бы требуют некоторой умственной рефлексии (за http://forums.sun.com/thread.jspa?threadID=5419973) при работе с объектами, типы которых неизвестны при компиляции.

Составных названия:
Я мог бы назвать все мои поли предшествуют имени своего класса т.е. a.aName и b.bName, который получает действительно некрасиво в реальной жизни: Door.DoorName и RotatingDoor.RotatingDoorName

Получатели и сеттера:
Я Жду» Это можно сказать об этом, поскольку с помощью JavaBeans они будут получены из имен полей, и я считаю, что Hibernate использует аннотированные POJO.

повлиять на результаты немного, затенение, кажется, самый надежный, по крайней мере, в моем случае, когда класс a расширяет абстрактный класс с Name определен, то b тени со своей собственной Name когда это применимо. Использование составных имен означало бы, что если бы я захотел добавить столбец NickName ко всем моим таблицам БД, тогда мне нужно было бы добавить это поле к каждому типу (а затем, в чем смысл наследования ?!)

В конце концов я решил выяснить, какие люди, которые, надеюсь, испытали плюсы и минусы реализации одного или нескольких из этих методов, должны сказать по этому вопросу; или что удобный камень травлению лучшая практика будет делать :)

-Nomad311

ответ

0

вы должны только определить свой член в базовом классе, если вам это нужно во всех подклассов. hibernate предлагает различные типы сопоставлений для деревьев классов. посмотрите на Inheritance mapping в руководстве, чтобы получить представление об этом.

Вы можете определить свое сопоставление либо через XML-файл, либо через аннотации.

+0

Спасибо за подсказку, после перерыва я проверю это и прочитаю в Hibernate. Я рад, что я еще не посвятил свой уровень данных еще ... Он бы втянул в реализацию одного из этих решений, чтобы найти, что он несовместим с Hibernate или, возможно, с любой другой инфраструктурой персистентности! – LostNomad311

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