Это работает на меня в Java 1.5 - я разделил определенные исключения для удобочитаемости.
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import java.io.ByteArrayInputStream;
public Document loadXMLFromString(String xml) throws Exception
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
return builder.parse(new ByteArrayInputStream(xml.getBytes()));
}
Это в основном сводится к тому, насколько велик пользователь и профиль. Если у пользователя 5 полей, а у профиля 3, то смысла нет. Но если у пользователя 12 полей, а у профиля 20, то вам обязательно нужно.
Я думаю, вам будет лучше использовать отдельную модель. Подумайте, как модели соответствуют таблицам базы данных, а затем как вы их читаете для различных вариантов использования, которые поддерживает ваше приложение.
Если пользователь лишь время от времени погружается в свой фактический профиль, но к модели User обращаются часто, вам обязательно следует сделать ее отдельным объектом с однозначным отношением. Если данные профиля требуются каждый раз, когда требуются данные пользователя, вы можете поместить их в одну таблицу.
Возможно, местоположение требуется каждый раз, когда вы отображаете пользователя (скажем, в оставленном им комментарии), а в биографии должна быть другая модель? Вам нужно будет найти правильную разбивку, но общее правило состоит в том, чтобы структурировать вещи так, чтобы вам не приходилось извлекать данные, которые не используются сразу.
Я бы рекомендовал сохранить столбцы профиля в модели пользователя. для ясности и простоты. Если вы обнаружите, что используете только определенные поля, выберите только нужные столбцы, используя: select.
Если позже вы обнаружите, что вам по какой-то причине нужна отдельная таблица (например, у одного пользователя может быть несколько профилей), разделить их не составит большого труда.
Пользователь "владеет" различными ресурсами на вашем сайте, такими как комментарии и т. Д. Если вы отделите профиль от пользователя, то это всего лишь еще один ресурс. Пользователь статичен, а профиль будет время от времени меняться.
Я бы держал его отдельно. Не все ваши пользователи захотят заполнять профиль, так что это будут пустые поля в вашей таблице пользователей. Это также означает, что вы можете изменять поля профиля без изменения логики вашей пользовательской модели.
Зависит от ширины существующей пользовательской таблицы. Базы данных обычно имеют ограничение на количество байтов, которое может содержать recird. Если вы близки к (или превышаете это, если у вас много полей с нулевыми значениями) предел, я бы добавил таблицу с соотношением один-к-одному для повышения производительности и меньшей вероятности записи который внезапно не может быть вставлен, так как данных слишком много для размера строки. Если вы еще не приблизились к пределу, добавьте в существующую таблицу.